Ruby on rails 仅当列为true时渲染部分项

Ruby on rails 仅当列为true时渲染部分项,ruby-on-rails,ruby,ruby-on-rails-4,partial-views,Ruby On Rails,Ruby,Ruby On Rails 4,Partial Views,我试图在部分中循环我的“offers”集合,但每个“offer”都有一列“featured”,这是一个默认为false的布尔值。我试图在集合中循环,只显示特色列设置为true的产品 我目前有: <%= render @offers %> 在下面尝试,但返回“未定义方法”功能 <%= render @offers if @offer.featured == true %> 任何帮助都会很棒在控制器中,设置另一个集合: @featured_offers = Off

我试图在部分中循环我的“offers”集合,但每个“offer”都有一列“featured”,这是一个默认为false的布尔值。我试图在集合中循环,只显示特色列设置为true的产品

我目前有:

<%= render @offers %>

在下面尝试,但返回“未定义方法”功能

<%= render @offers if @offer.featured == true %>


任何帮助都会很棒

在控制器中,设置另一个集合:

@featured_offers = Offer.where(featured: true)
并将其呈现为:

<%= render @featured_offers %>

要更正您的即时代码,您正在调用
@offer
上的
.featured
——该功能不存在

您需要循环查看
@offers
并在
offer
上使用逻辑,或者在partial中使用条件(这是非常低效的):

您甚至可以链接范围:

@offers = Offer.where(user_id: params[:id])

<%= render @offers.featured %>
@offers=Offer.where(用户id:params[:id])
<%= render @offers %>

#_offer.html.erb
<% if offer.featured %>
   This is super inefficient
<% end %>
#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 %>