Rails - 根据条件在显示页面上显示消息

时间:2014-08-25 17:17:12

标签: ruby-on-rails

我正在创建一个卖家列出待售商品的市场应用。我使用下面的代码在上次更新后30天到期。

列表模型中的

def self.not_expired
   where('created_at >= ?', Date.current - 30.day)
end

在控制器中:

def index
   @listings = Listing.not_expired
end

上面的内容让我可以使用尚未过期的商家信息过滤索引页面。如何在这些过期的商品详情的展示页面上显示消息?如果过期的商家信息显示在谷歌搜索中,当用户点击该页面时,我想要一条消息,说明该商家信息已过期。

我正在寻找一些条件语句放入我的控制器或show html页面。

2 个答案:

答案 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 %>