2013-03-26 80 views
0

如何通過rails中的輸入標記移除有很多關係?Rails窗體移除有很多關係

我有一個名爲發票的模型。

has_many :expenses 

我想這,刪除所有相關型號的發票:

input name="invoice[expense_ids][]" value="" 

但似乎沒有工作。輸入標籤在更新操作中使用正確格式的update_attributes函數的正確方法是什麼?

回答

1

我如何做到這一點是在控制器

invoice.expense_ids = [] if invoice.persisted? 
invoice.update_attributes(params[:invoice]) 

哪個更新記錄之前,將基本消除任何費用的關聯,所以現有的將重新加入或者有沒有傳入這將是空白。

的時間越長的方式來做到這一點是基本消除任何不再數組

ids = invoice.expense_ids 
ids = ids.keep_if{|i|, params[:invoice][:expense_ids].include?(i)} 
invoice.expense_ids = ids 
+0

感謝完美的作品+好主意英寸你爲什麼使用invoice.persisted?要更新的記錄通常已經存在,或者? – Hendrik 2013-03-27 09:42:37

+0

是的,這是我的不好我通常使用相同的控制器更新/創建(幹猜我猜) – 2013-03-27 15:56:33

+0

你有這樣的控制器的例子嗎?我會對閱讀該代碼非常感興趣。謝謝。 – Hendrik 2013-03-27 21:51:14