我有两个模型 - Product
和ProductCategory
。 Product
属于ProductCategory
,产品类别也可以包含许多产品。现在我正在尝试在表单中创建一个用于创建新Product
的选择标记,我会选择一个类别并将此新产品设置为属于该类别,但我很困惑怎么办那。在我的控制器中我有
def create
@product = Product.new(product_params)
@product.save
redirect_to products_path
end
private
def product_params
params.require(:product).permit(:name, :description, :price, :product_category_id)
end
在我看来,我试图做这样的事情:
<%= form_for @product do |f| %>
<%= f.collection_select :product_category_ids, ProductCategory.all, :id, :name,
{multiple: true} %>
<% end %>
但我有以下错误
undefined method `product_category_ids' for #<Product:0x007f4982afa758>
我该如何让这个选择标签起作用?
ADDED
我也尝试过这样的方式:
<%= f.select :product_category_id, ProductCategory.all.collect { |c| [c.name, c.id] }, include_blank: true %>
但它只返回了一个option
标签。
答案 0 :(得分:1)
试试这个:
product_category_ids
不是product
模型
<%= form_for @product do |f| %>
<%= f.collection_select :product_category_id, ProductCategory.all, :id, :name,
{multiple: true} %>
<% end %>