在选择字段中显示类别

时间:2013-06-15 08:00:57

标签: ruby-on-rails ruby-on-rails-3 activerecord

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 %>

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

1 个答案:

答案 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])

不要忘记保存你的模特。