0

私のHome#Indexページには、これがあります:

  <%= render 'home/popular_products', :collection => @products, :as => :product %>

私のHome#_popular_products見解では、私はこれを持っています:

<div class="span2 recommended">
  <%= image_tag product.image_url(:thumb).to_s %>
</div>

これは私が取得し続けるエラーです:

undefined local variable or method `product' for #<#<Class:0x007f871c4f6848>:0x007f871cdb7e28>

私が理解している限り、ステートメントで:as属性を指定する必要さえないはずですが、を使用しただけでは機能しないため、これを明示的にしようとしました。render:collection => @products

Home#Index Controllerはこれを持っています:

@products = Product.all.sample(6)

考え?

4

2 に答える 2

1

:partial他のオプションを渡したい場合は、オプションを指定する必要があると思います。すなわち:

<%= render :partial => 'home/popular_products', :collection => @products, :as => :product %>

動作するはずです。

于 2012-11-16T04:55:38.533 に答える
0

あなたはあなたの中に_popular_products.html.erbファイルを入れますapp/views/home/か?Railsの規則に従わない部分的なものを使用していると思うので、railsはproduct変数を理解していません。_product.html.erbそのように使用したい場合は、パーシャルに名前を付ける必要があります。その部分で、あなたはこのように書くことができます:

<%= render @products %>

アップデート

解決策1

インデックスページ:

<%= render 'popular_products', :collection => @products %>

部分的:

<%= image_tag popular_products.image_url(:thumb).to_s %>

解決策2

インデックスページ:

<% @products.each do |product| %>
  <%= render :partial => "popular_products", :locals => { :product => product } %>
<% end %>

部分的:

<%= image_tag product.image_url(:thumb).to_s %>
于 2012-11-16T04:29:51.720 に答える