2

ここでレール初心者。特定のカテゴリに属する​​すべての製品のリストを表示したい。シンプルにしたかったので、各商品のカテゴリーは1つだけです。カテゴリを表示すると、製品はそこにありますが、次のように配列で表示されます。

名前:はんだ付け

カテゴリID:2

製品:[#<製品ID: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>、#<製品ID: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>]

これは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'

何が悪いのかわかりません。

4

2 に答える 2

4

を反復処理する必要があります@category.products。に属する@category.productsすべてのモデルが表示されます。Product@category

@categorys のコレクションをCategory持つ)は応答しません-それが何であるかわかりません。それが知っているのは、たくさんのs があるということだけです。ProductproductProduct

<% @category.products.each do |product| %>
    <p>
        <b>Product:</b>
        <%= product.name %>
    </p>
<% end %>
于 2012-07-18T22:09:56.327 に答える
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
于 2012-07-18T22:49:11.860 に答える