Rails newb here。 我有一个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的未定义方法`产品'::关系:0x007fb34b1010c0> 我知道这是因为@categories不只包含一行,但我想以某种方式建立关系。 然后在我的视图文件中,我想获取类别并在选择字段中显示它们
<%= collection_select :product, :category_id, @categories, :id, :name, @product.category_id %>
最好的方法是什么? 感谢。
答案 0 :(得分: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])
不要忘记保存你的模特。