在我的Rails应用中,我显示created_at
,如month-day
,如03-21
。
然而,当年份不是今年,这种类型的表达可能会让人感到困惑,所以当年份不是2014-03-21
时,我希望显示Time.now.year
。
这就是我想出来的
<% if tweet.created_at.year == Time.now.year %>
<%= tweet.created_at.strftime("%m-%d") %>
<% else %>
<%= tweet.created_at.strftime("%Y-%m-%d") %>
<% end %>
但我认为这段代码有点长,还有其他更好的做法吗?
答案 0 :(得分:2)
缩短使用ternary operator:
<% tweet.created_at.year == Time.now.year ? tweet.created_at.strftime("%m-%d") : tweet.created_at.strftime("%Y-%m-%d") %>
答案 1 :(得分:2)
我看到2个选项。两者都很优雅,看看你喜欢什么。
1.按原样使用strftime。
<%= tweet.created_at.strftime( tweet.created_at.year == Time.now.year ? "%m-%d" : "%Y-%m-%d") %>
2.使用I18n.localize
。假设你有两种本地化格式(例如full
和short
)。
<%= I18n.l(tweet.created_at, format: (tweet.created_at.year == Time.now.year ? :short : :full)) %>
答案 2 :(得分:0)
就个人而言,我会使用time_ago_in_words(tweet.created_at)
帮助器,这会显示更直观,更易读的时间戳。
答案 3 :(得分:0)
你甚至可以这样做
<%= tweet.created_at.strftime(tweet.created_at.year == Time.now.year ? "%m-%d" : "%Y-%m-%d") %>