我正在创建一个卖家列出待售商品的市场应用。我使用下面的代码在上次更新后30天到期。
列表模型中的:
def self.not_expired
where('created_at >= ?', Date.current - 30.day)
end
在控制器中:
def index
@listings = Listing.not_expired
end
上面的内容让我可以使用尚未过期的商家信息过滤索引页面。如何在这些过期的商品详情的展示页面上显示消息?如果过期的商家信息显示在谷歌搜索中,当用户点击该页面时,我想要一条消息,说明该商家信息已过期。
我正在寻找一些条件语句放入我的控制器或show html页面。
答案 0 :(得分:2)
您可以这样做:
# Listing model
def expired?
self.created_at <= 30.days.ago
end
# ListingsController
def show
@listing = Listing.find(params[:id])
end
# listings/show.html.haml
- if @listing.expired?
= "This listing is expired!"
- else
# your logic to display a non-expired listing
此外,我建议您在列表过期前的天数使用常量。稍后在代码中更改它会更容易。
这样的事情会起作用:
# Listing model
DAYS_BEFORE_EXPIRED = 30
def expired?
self.created_at <= DAYS_BEFORE_EXPIRED.days.ago
end
def self.not_expired
where('created_at >= ?', DAYS_BEFORE_EXPIRED.days.ago)
end
答案 1 :(得分:1)
最简单的方法是创建一个类方法的实例方法:
def expired?
self.created_at <= 30.days.ago
end
然后在你的再培训局:
<% if @listing.expired? %>
Message indicating the listing has expired
<% else %>
The listing
<% end %>