我试图推翻我的优惠'收集部分,但每个提供'有专栏'这是一个默认为false的布尔值。我试图遍历集合,只显示特色列设置为true的商品。
我目前有:
<%= render @offers %>
尝试以下内容,但使用未定义的方法&#39;特色&#39;
<%= render @offers if @offer.featured == true %>
任何帮助都会很棒
答案 0 :(得分:4)
在您的控制器中,设置另一个集合:
@featured_offers = Offer.where(featured: true)
然后改为:
<%= render @featured_offers %>
答案 1 :(得分:1)
要更正即时代码,您需要在.featured
上调用@offer
- 这不存在。
您需要循环遍历@offers
并使用offer
上的逻辑,或使用部分内部的条件(这是非常低效的):
<% @offers.each do |offer| %>
<%= render offer if offer.featured %>
<% end %>
或
<%= render @offers %>
#_offer.html.erb
<% if offer.featured %>
This is super inefficient
<% end %>
-
@jason
建议使用where
子句
您甚至可以更进一步,设置scope:
#app/models/offer.rb
class Offer < ActiveRecord::Base
scope :featured, -> { where featured: true }
end
@offers = Offer.featured
您甚至可以链接范围:
@offers = Offer.where(user_id: params[:id])
<%= render @offers.featured %>