我有一个零件文件,我想在其中展示我为特定合作伙伴提供的所有产品。这是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 %>
但我不断收到错误:未定义的方法 `each' for "2,1":String 它说它在这一行:<% @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
它应该返回对象而不是字符串我做错了什么?谢谢@论文
更新 2 伙计们,非常感谢您的帮助,在@thesis 的帮助下,我想通了。这实际上是我以前从未想过的事情,问题中也没有描述。当我在另一个页面中选择产品时,我的 sessionkeeper 帮助我保留了我的表格!那是在搞砸!