0

Rails 新手在这里。我有一个 Product 和 ProductCategory 模型,产品属于产品类别,产品类别有很多产品。我的种子文件:

product_categories = [
    {:category => "Arts", :category_type => "physical" },
    {:category => "Books", :category_type => "physical" },
    {:category => "Diy & Craft", :category_type => "physical" },
    {:category => "Ebook", :category_type => "digital" },
    {:category => "Gadgets", :category_type => "physical" },
        etc.

]

在我的产品->新方法中

@categories = ProductCategory.where("category_type = ?", params[:category_type])
@product = @categories.products.new(params[:product])

我收到此错误-> #ActiveRecord::Relation:0x007fb34b1010c0 的未定义方法`products'> 我知道这是因为@categories 不只包含一行,但我想以某种方式建立关系。然后在我的视图文件中,我想获取类别并将它们显示在选择字段中

<%= collection_select :product, :category_id, @categories, :id, :name, @product.category_id %>

最好的方法是什么?谢谢。

4

1 回答 1

1

ActiveRecord::Relation此查询返回多个结果 ( ):

@categories = ProductCategory.where("category_type = ?", params[:category_type])

如果您确定查询中只有一个结果,则应将 .first 放在最后。

@category = ProductCategory.where("category_type = ?", params[:category_type]).first

此外,您在第二个查询中有错误。您在集合上调用新方法。你应该试试这个:

@product = @category.products << Product.new(params[:product])

并且不要忘记保存您的模型。

于 2013-06-15T09:07:59.890 回答