这是此处提出的问题的延续
如何使用 ActiveRecord 将一对多对象添加到父对象
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
如何处理删除多选复选框中的条目用于表示一对多实体。我可以添加或更新条目,但删除似乎失败,因为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 似乎仍然没有反映这些更改。