これは、ここで提起された質問の続きです
ActiveRecord を使用して親オブジェクトに 1 対多のオブジェクトを追加する方法
class Foo < ActiveRecord::Base
has_many :foo_bars
end
class Bar < ActiveRecord::Base
end
class FooBar < ActiveRecord::Base
belongs_to :foo
belongs_to :bar
end
複数選択チェック ボックスでエントリの削除を処理する方法は、1 対多のエンティティを表すために使用されます。エントリを追加または更新できますが、foo_idが空のように見え、クエリが削除ではなく更新されているように見えるため、削除に失敗したようです。
編集:
次のコードを使用して@charlysistoの提案を試しました
私のコントローラーコードは次のとおりです。
class Foo < ActiveRecord::Base
has_many :foo_bars
has_many :bars, :through => :foo_bars
end
def edit
@foo = Foo.find(params[:id])
@sites = Site.where(company_id: @current_user.company_id).all
end
def update
@foo = Foo.find(params[:id])
if @foo.update_attributes(params[:foo])
flash[:notice] = "Foo was successfully updated"
redirect_to foos_path
else
render :action => 'edit'
end
end
ビューコードは次のとおりです。
<% @bars.each do |bar| %>
<%= check_box_tag 'bar_ids[]', bar.id %>
<%= bar.name %>
<% end %>
だから私はこれらの変更を試みましたが、レコードを削除しても foo_bars は変更を反映していないようです。