我試圖循環顯示部分內容中的'offers'集合,但每個'offer'都有一個'featured'列,它是一個默認爲false的布爾值。我試圖循環收集並僅顯示將特色列設置爲true的優惠。只有在列爲真的情況下渲染部分項目
我目前有:
<%= render @offers %>
以下嘗試,但與「未定義的方法 '特色'
<%= render @offers if @offer.featured == true %>
任何幫助將是非常美妙的
我試圖循環顯示部分內容中的'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
使用邏輯,或使用條件的部分內(這是非常低效的):
<% @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 %>