ruby-on-rails - distance_of_time_in_words rails 4

标签 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 新手有什么建议吗?

最佳答案

您想传入第二个时间参数。如果没有第二个参数,它将从 0(或 Epoch——这就是为什么你有 44 年的原因,因为 Epoch 通常是从 1970 年 1 月 1 日开始计算的)。尝试这样的事情:

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

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

实际上有一个捷径:

<%= distance_of_time_in_words_to_now(offer.expires_at) %>

关于ruby-on-rails - distance_of_time_in_words rails 4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22386650/

相关文章:

ruby-on-rails - Rails/Ruby 错误地显示变量未定义

Rails Controller 返回 200 OK 时未触发 jquery ajax 成功回调

ruby-on-rails - Localhost :3000 claims "gem ' pg'"in not installed, Heroku 应用运行正常

C# Datetime 插入 SQL Server 值,精确到微秒

ruby-on-rails - Capybara + Selenium : How to select second item in Chosen. js 多选列表?

ruby-on-rails - Rails 4 关注 : Give class instance variables to model

ruby-on-rails - rails : From UUID to ID

Ruby - 使用 && 时的意外行为

mysql - 从 MySQL/数据库获取 DateTime 中的 -0200

java - 无法将 UTC 转换为本地时间