distance_of_time_in_words rails 4

时间:2014-03-13 17:41:26

标签: ruby-on-rails ruby datetime ruby-on-rails-4

我正在尝试在rails 4中使用distance_of_time_in_words。我在数据库中有一个名为expires_at的日期时间字段。我已经尝试了几种不同的格式化方法,但似乎无法让它正常工作。

<%= offer.expires_at.strftime('%I:%M %p %b %d') %> // works properly: 12:00 AM Mar 29
<%= distance_of_time_in_words(offer.expires_at) %> // fails: undefined method `to_datetime' for 0:Fixnum
<%= distance_of_time_in_words(Time.parse(offer.expires_at.to_s)) %> // fails as above
<%= distance_of_time_in_words(offer.expires_at.to_time.to_i) %> // works but shows '44 years' as distance

RoR noob的任何指针?

1 个答案:

答案 0 :(得分:6)

您想要传入第二个时间参数。如果没有第二个参数,它将从0(或Epoch - 计算出来 - 这就是为什么自从大纪元经常从1970年1月1日开始已经44年了。)尝试这样的事情:

<%= distance_of_time_in_words(offer.expires_at, Time.now) %>

这将从报价到期到当前时间计算。您可以切换参数顺序,如果这对您更有意义,但它会输出相同的内容。

实际上这是一个捷径:

<%= distance_of_time_in_words_to_now(offer.expires_at) %>