Ruby on rails 仅当列为true时渲染部分项
我试图在部分中循环我的“offers”集合,但每个“offer”都有一列“featured”,这是一个默认为false的布尔值。我试图在集合中循环,只显示特色列设置为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
<%= 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 %>