Rails初学者在这里。我想显示属于特定类别的所有产品的列表。我想保持简单,所以每个产品只有一个类别。当我显示类别时,产品就在那里,但它们出现在一个数组中,如下所示:
名称:焊接
类别ID:2
产品:[#<产品编号:5,标题:“Hacksaw”,描述:“Finetooth Hacksaw”,image_url:>>“hacksaw.jpg”,价格:#,created_at:“2012-07-14>> 22:34: 07“,updated_at:”2012-07-17 22:18:14“,category_id:2,category_name:nil>,#<产品编号:8,>>标题:“火炬”,描述:“焊枪”,image_url:“torch.jpg”,价格:>>#,created_at:“2012-07-15 08:40: 05“,>> updated_at:”2012-07-15 08:40:05“,category_id:2,category_name:nil>]
这是类别/ show.html.erb:
<p>
<b>Products:</b>
<%= @category.products %></p>
</p>
和类别控制器:
def show
@category = Category.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.json { render json: @category }
end
end
我想要做的只是显示产品名称列表,但是当我在show.html.erb中尝试这个时:
<p>
<b>Products:</b>
<%= @category.product.name %></p>
</p>
...我收到以下错误:
未定义的方法`product'for#&lt;类别:0x007ff03cd59e98&GT;
我无法弄清楚出了什么问题。
答案 0 :(得分:4)
您需要遍历@category.products
。 @category.products
会为您提供属于Product
的所有@category
个模型。
@category
({{1>},其中有Category
s 的集合)将不会回复Product
- 它不知道那是什么它只知道它有一堆product
s。
Product
答案 1 :(得分:0)
这与我一直在做的类似。这可能有助于比较。
show.html.erb
<p>
<b>Title:</b>
<%= @product.title %>
</p>
<p>
<b>Description:</b>
<%= @product.description %>
</p>
<p>
<b>Image url:</b>
<%= @product.image_url %>
</p>
<p>
<b>Price:</b>
<%= @product.price %>
</p>
控制器
def show
@product = Product.find(params[:id])
respond_to do |format|
format.html # show.html.erb
format.json { render json: @product }
end
end