2

Rails 新手问题。目前我有一个应用程序,其中包括:

<%= time_ago_in_words(post.created_at) %> ago.

这会产生类似于以下内容的输出:

“6天21小时56分钟前。”

我想简化和概括这一点,使其更像:

“6 天前”或“5 小时前”或“几秒钟前”等

  1. 我怎样才能做到这一点?
  2. 我在 Hartl rails 教程中注意到<%= time_ago_in_words(post.created_at) %>按预期工作(即短而甜)。为什么有区别?输出是否time_ago_in_words取决于使用的 Rails 版本?
4

3 回答 3

1

helper 方法time_ago_in_words只是distance_of_time_in_words通过将参数发送to_time到 fixed的包装器Time.now

如果你还没有准备好升级,可以尝试将distance_of_time_in_wordsRails 3.2.13 的方法直接复制到你的 ApplicationHelper 中。

我无法验证,因为我没有你的版本。但值得一试。

来源在这里,感谢 tessi 提供的链接:http: //apidock.com/rails/v3.2.13/ActionView/Helpers/DateHelper/distance_of_time_in_words

于 2013-06-27T15:09:09.363 回答
0

我知道您可以删除秒数,您需要添加“之前”部分。这似乎适用于我的应用程序与 ruby​​ 1.9.3 和 rails 3.2.18。

<%= time_ago_in_words(post.created_at, include_seconds=false) + " ago" %>
于 2013-06-27T14:03:12.440 回答
0

你可以试试:

time_ago_in_words(post.created_at).split(',').first

这将始终显示最重要的单位。但是,这不会正确“四舍五入”;1 month, 29 days ago将显示为1 month,即使您可能希望它是2 months.

于 2015-11-24T21:47:16.573 回答