输出比time_ago_in_words()更短

是否有一个Ruby / Rails函数显示比time_ago_in_words()更短的文本?

例如,而不是5 hours ago ,有可能在5 hours ago获得?

比利的代码更新。 我更喜欢这样做:

 TIME_PATTERN = {' hours'=>'h', ' minutes'=>'m', ' days'=>'d', ' hour'=>'h', ' minute'=>'m', ' day'=>'d'} def time_ago_converter(words) TIME_PATTERN.each_pair do |k, v| words.gsub!(k, v) end words end 

在视图中:

 <%= time_ago_converter time_ago_in_words(foo.created_at) %> 

因为,每次调用time_ago_converter时都要实例化哈希对象。 并且,通过它的外观,可以假设每次渲染视图时都会频繁调用此方法。 相反,我会将它声明为常量并重复使用它。 如果我错了,请在这里纠正我。

另外,我认为这也可以这样做:

 TIME_PATTERN = {' hours'=>'h', ' minutes'=>'m', ' days'=>'d', ' hour'=>'h', ' minute'=>'m', ' day'=>'d'} # or make use of locale: # TIME_PATTERN = {' hour'=> I18n.t('h'), ' minute'=> I18n.t('m'), ' day'=> I18n.t('d'), ' hours'=> I18n.t('h'), ' minutes'=> I18n.t('m'), ' days'=> I18n.t('d')} def time_ago_in_words_converter(time) word = time_ago_in_words(time) TIME_PATTERN.each_pair{ |k, v| word.gsub!(k, v) } word end 

在视图中:

 <%= time_ago_in_words_converter(foo.created_at) %> 

干杯!

time_ago_in_words以固定格式输出单词。 您可以编写帮助程序来处理自定义需求。

 def time_ago_converter(words) pattern = {' hour'=>'h', ' minute'=>'m', ' day'=>'d', ' hours'=>'h', ' minutes'=>'m', ' days'=>'d'} pattern.each_pair do |k, v| words.gsub!(k, v) end words end time_ago_converter time_ago_in_words(foo.created_at) 

更新:我在键之前添加了一个空格。 此外,time_ago_in_words和此方法都不是非常有效,因为它们对缓存不友好。 如果可能的话,建议使用客户端lib来处理时间。

您可以使用I18n语言环境:

请参阅文件: https : //github.com/svenfuchs/rails-i18n/blob/master/rails/locale/en.yml

根据您的“短文本”要求,您可以根据格式,日期时间,about_x_ *等相应地修改其中的区域设置。