Ruby on rails 比时间更短的输出(大写)()
是否有一个Ruby/Rails函数可以在words()中显示比Ruby on rails 比时间更短的输出(大写)(),ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,是否有一个Ruby/Rails函数可以在words()中显示比time\u ago\u更短的文本 例如,与5小时前的5相比是否可以改为5小时前的5相比?您可以使用I18n语言环境进行相同的操作: 请参阅文件: 您可以根据您的“短文本”要求,相应地修改其中的语言环境,如格式、日期时间、关于x等。您可以使用I18n语言环境进行相同的操作: 请参阅文件: 您可以根据您的“短文本”要求,相应地修改其中的语言环境,如格式、日期时间、关于x等。time\u ago\u in\u words以固定格式输出单词
time\u ago\u更短的文本
例如,与5小时前的5相比
是否可以改为5小时前的5相比?您可以使用I18n语言环境进行相同的操作:
请参阅文件:
您可以根据您的“短文本”要求,相应地修改其中的语言环境,如格式、日期时间、关于x等。您可以使用I18n语言环境进行相同的操作:
请参阅文件:
您可以根据您的“短文本”要求,相应地修改其中的语言环境,如格式、日期时间、关于x等。time\u ago\u in\u 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\u ago\u in\u 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)
更新:我在键前添加了一个空格。而且,时间和这个方法都不是很有效,因为它们对缓存不友好。如果可能的话,建议使用客户端库来处理以前的代码。Billy代码的更新。我更喜欢这样做:
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_in_words_converter(foo.created_at) %>
干杯 比利代码的更新。我更喜欢这样做:
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_in_words_converter(foo.created_at) %>
干杯 有没有办法两者兼得?i、 e.能够在默认情况下显示正常版本,在需要时显示较短版本?您可以将较短版本的区域设置添加到不同的“区域设置”中,例如:en_abbrev,并将选项以文字形式传递给time_ago_。类似这样的事情:有没有办法两者兼得?i、 e.能够在默认情况下显示正常版本,在需要时显示较短版本?您可以将较短版本的区域设置添加到不同的“区域设置”中,例如:en_abbrev,并将选项以文字形式传递给time_ago_。类似这样的东西:如果这个时间对象可以使用strftime(“%Hh ago”)
^@Monk\u代码,我认为这行不通。参见:t=1.小时前
result:=>2013年12月31日星期二06:28:01 UTC+00:00。现在:t.strftime(“%Hh ago”)
result:=>“06h ago”一点也不正确。@Surya只是胡说八道)如果这个时间对象你可以使用strftime(“%Hh ago”)
^@Monk\u代码,我认为这行不通。参见:t=1.小时前
result:=>2013年12月31日星期二06:28:01 UTC+00:00。现在:t.strftime(“%Hh ago”)
result:=>“06h ago”这根本不是真的。@Surya只是胡说八道)))如果你重新排列TIME\u模式
使复数在奇点之前,你可以对方法体使用gsub
如下:words.gsub(Regexp.union(TIME\u PATTERN.keys),TIME\u模式)
,这是一个很好的捕捉。但是,从他的问题来看,我不认为他想要这样的东西:5小时前。因此,如前所述,重新排列时间模式
。是的,我同意@MichaelKohl的观点,复数必须在奇点之前,以避免出现1ms而不是1m。如果你重新排列时间模式
,将复数置于奇点之前,您可以使用gsub
作为如下方法的主体:words.gsub(Regexp.union(TIME\u PATTERN.keys),TIME\u PATTERN)
。是的,这是一个很好的捕获。但是,从他的问题来看,我不认为他想要这样的东西:5小时前。因此,正如前面提到的,重新排列时间模式。是的,我同意@MichaelKohl,复数必须在奇点前面,以避免出现1毫秒而不是1毫秒。