Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 比时间更短的输出(大写)()_Ruby On Rails_Ruby_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 比时间更短的输出(大写)()

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以固定格式输出单词

是否有一个Ruby/Rails函数可以在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毫秒。