特定のパートナーのすべての製品を表示したいパーツファイルがあります。これがhtml.erbです:
<% unless @products.nil? %>
<% @products.each do |prod|%>
<tr id="p_<%= prod.id%>">
<td><%= prod.name %></td>
<td><%= prod.price %></td>
<td><%= number_field_tag "product_qty_input[#{prod.id}]", get_offer_product_qty(@offer.id, prod.id),:min => 0, :max => 99 %></td>
<td>X</td>
</tr>
<% end %>
<% end %>
しかし、私はエラーを受け取り続けます:「2,1」の未定義のメソッド `each':文字列それはこの行にあると言います:<%@ products.each do | prod |%>
しかし、問題はわかりません。これが私のコントローラーです。
def select_products
@partner = Partner.find(params[:partner_id])
if params[:id] == "-1"
@offer = nil
else
@offer = Offer.find(params[:id])
end
@select_callback = url_for( @offer.nil? ? new_partner_offer_path(@partner) : [:edit, @partner, @offer] )
@products = @partner.active_products
@num_select = PRODS_PER_OFFER
respond_to do |format|
format.html { render :template => "products/select"}
end
end
@products = @partner.active_productsメソッドがあるのがわかりますが、それがそこに到達したかどうかを確認するために変更しましたが、そうではないので、以前は何かである必要があります...
私はどんな助けにも感謝します。
前もって感謝します
アップデート
方法は次のactive_products
とおりです。
def active_products
self.products.where("active IS NOT NULL AND active = true")
end
文字列ではなくオブジェクトを返す必要があります何が間違っていますか?ありがとう@thesis
UPDATE 2 みんな、助けてくれてありがとう、そして@thesisの助けを借りて私はそれを理解した。それは実際には私が前に考えたことのないものであり、ここでの質問では説明されていませんでした。別のページで製品を選択したときに、セッションキーパーがフォームを維持するのを手伝ってくれました。それはそれを台無しにしていた!