使用另一个模型所属的模型填充select标记

时间:2016-11-04 08:50:17

标签: ruby-on-rails ruby

我有两个模型 - ProductProductCategoryProduct属于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标签。

1 个答案:

答案 0 :(得分:1)

试试这个:

product_category_ids不是product模型

的列
<%= form_for @product do |f| %>
    <%= f.collection_select :product_category_id, ProductCategory.all, :id, :name, 
                                                          {multiple: true} %>
<% end %>