Railsの入力タグを介して多くの関係を削除するにはどうすればよいですか?
請求書という名前のモデルがあります。
has_many :expenses
請求書に関連するすべてのモデルを削除するためにこれを試みています:
input name="invoice[expense_ids][]" value=""
しかし、それは機能しないようです。更新アクションでupdate_attributes関数のパラメーターを正しい形式で入力タグに含める正しい方法は何ですか?
Railsの入力タグを介して多くの関係を削除するにはどうすればよいですか?
請求書という名前のモデルがあります。
has_many :expenses
請求書に関連するすべてのモデルを削除するためにこれを試みています:
input name="invoice[expense_ids][]" value=""
しかし、それは機能しないようです。更新アクションでupdate_attributes関数のパラメーターを正しい形式で入力タグに含める正しい方法は何ですか?
私はそれをどのようにコントローラーに入れますか
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