首页 文章

在Rails中按类别显示产品

提问于
浏览
2

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

名称:焊接类别ID:2产品:[#<产品编号:5, Headers :“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,>> Headers :”火炬“ ,简介:“焊枪”,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>]

这是categories / 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'

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

2 回答

  • 0

    你需要遍历 @category.products . @category.products 将为您提供属于 @category 的所有 Product 模型 .

    @categoryCategory ,其中包含 Product 的集合)将不会响应 product - 它不知道那是什么 . 它只知道它有一堆 Product .

    <% @category.products.each do |product| %>
        <p>
            <b>Product:</b>
            <%= product.name %>
        </p>
    <% end %>
    
  • 4

    这与我一直在做的类似 . 这可能有助于比较 .

    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
    

相关问题