我是第一个自己项目的铁杆菜鸟。
我使用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视图:
<% @shops.each do |t| %>
<%= f.label t.name %>
<%= f.check_box :shops, t.id %>
<% end %>
我已经尝试了很多东西并花了好几个小时但却无法找到解决方案。除了其他事情,我看了一下这些问题,但我无法让它发挥作用:
最后我得到了一个
undefined method `merge' for 3:Fixnum
如果您需要任何其他详细信息来处理此问题,或者如果我已经错过了这方面的问题,请告诉我。
提前致谢
答案 0 :(得分:2)
试试这个
<% @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
..