在Rails中按类别显示产品

时间:2012-07-18 21:52:58

标签: ruby-on-rails ruby-on-rails-3.2

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;

  

我无法弄清楚出了什么问题。

2 个答案:

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