2

Rails 初学者在这里。我想显示属于特定类别的所有产品的列表。我想保持简单,所以每个产品只有一个类别。当我显示类别时,产品在那里,但它们出现在一个数组中,如下所示:

名称:焊接

类别编号:2

Products: [#< Product id: 5, title: "Hacksaw", description: "Finetooth Hacksaw", image_url: >>"hacksaw.jpg", price: #, created_at: "2012-07-14 >>22:34 :07", updated_at: "2012-07-17 22:18:14", category_id: 2, category_name: nil>, #< Product id:8, >>title: "Torch", description: "Welding Torch", image_url:“torch.jpg”,价格:>>#,created_at:“2012-07-15 08:40:05”,>>updated_at:“2012-07-15 08:40:05”,category_id:2,类别名称:无>]

这是类别/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>

...我收到以下错误:

#< Category:0x007ff03cd59e98> 的未定义方法“product”

我不知道出了什么问题。

4

2 回答 2

4

您需要遍历您的@category.products. @category.products会给你所有Product属于的模型@category

@categoryCategory具有s集合Product的)不会响应product- 它不知道那是什么。它只知道它有一堆Products。

<% @category.products.each do |product| %>
    <p>
        <b>Product:</b>
        <%= product.name %>
    </p>
<% end %>
于 2012-07-18T22:09:56.327 回答
0

这是我一直在做的类似的事情。它可能有助于比较。

显示.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
于 2012-07-18T22:49:11.860 回答