Rails:通过form_for check_box为HABTM关系分配多个参数

我是第一个自己项目的铁杆菜鸟。

我使用has_and_belongs_to_many关系链接了两个模型:Wine和Shop。 为了简单起见,葡萄酒可以在不同的商店出售,特定的商店可以出售许多不同的葡萄酒。 以下是模型:

class Shop < ActiveRecord::Base has_and_belongs_to_many :wines end class Wine < ActiveRecord::Base has_and_belongs_to_many :shops end 

我的目标是创建一个表单来创建Wine的实例,包括可以购买葡萄酒的商店。 这是我的wines_controller:

  def new @wine = wine.new @shops = Shop.all respond_to do |format| format.html # new.html.erb format.json { render json: @wine } end end def create @wine = Wine.new(params[:wine]) params[:shops].each do |id| @wine.shops << Shop.find(id) end end 

这是我在新视图中呈现的_form视图:

     

我已经尝试了很多东西并且花了好几个小时但是找不到解决方案。 除了其他的事情,我看了一些问题,但我无法让它工作:

  • Rails为具有多对多关系的模型创建表单
  • 使用HABTM关系更新复选框的值 – Rails
  • 使用collection_select创建HABTM关系中的多个记录 – Rails

最后我得到了一个

 undefined method `merge' for 3:Fixnum 

如果您需要任何其他细节来处理此问题,或者如果我已经错过了关于此的问题,请告诉我。

提前致谢

试试这个

 <% @shops.each do |t| %> <%= f.label t.name %> <%= check_box_tag "shops[]", t.id %> <% end %> 

和您的控制器代码

 def create @wine = Wine.new(params[:wine]) @shops = Shop.find params[:shops] @wine.shops = @shops ..