Rails如何缩短time_ago_in_words

时间:2013-06-27 13:35:00

标签: ruby-on-rails

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版本?

3 个答案:

答案 0 :(得分:1)

辅助方法time_ago_in_words只是distance_of_time_in_words的包装器,它将参数to_time发送到固定Time.now

如果您尚未准备升级,可以尝试将Rails 3.2.13的distance_of_time_in_words方法直接复制到ApplicationHelper中。

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

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

答案 1 :(得分:0)

我知道你可以删除秒,你需要添加“前”部分。这似乎可以在我的应用程序中使用ruby 1.9.3和rails 3.2.18。

<%= time_ago_in_words(post.created_at, include_seconds=false) + " ago" %>

答案 2 :(得分:0)

你可以尝试:

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

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