0

当我通过 Rails time_ago_in_words 方法一个大于 1 个月前的日期时,它返回一个字符串,内容类似于“大约 N 个月大”。

无论如何让这种方法返回与日期参数的距离仅以天为单位,即 30 天前、50 天前、90 天前等...

4

3 回答 3

4

你可以在上面定义你自己的助手time_ago_in_words

def days_ago_in_words(time)
  days = ((Time.now - time.to_time) / 86400.0).round
  if days > 1
    I18n.t :x_days, :count => days, :scope => :'datetime.distance_in_words'
  else
    time_ago_in_words(time)
  end
end

I18n 键和范围来自,distance_of_time_in_words因此您不必定义自己的。

于 2013-05-09T18:25:22.133 回答
3
class Time
  def days_ago
    diff = Time.now - self
    return ago if diff < 86400
    "#{"day".pluralize(diff.to_i / 86400)} ago"
  end
end

class Date
  def days_ago
    to_time.days_ago
  end
end

或作为助手:

def days_ago(date)
  diff = Time.now - date.to_time
  return date.ago if diff < 86400
  "#{"day".pluralize(diff.to_i / 86400)} ago"
end
于 2013-05-09T16:19:38.763 回答
1

不,你不能。助手不支持,这里是定义

但是,您的案例实际上比辅助逻辑更简单。您可以创建一个新的助手,从当前日期中减去旧日期,然后将得到的秒数除以 (60 * 60 * 24) (即一天中的秒数),然后得到结果。

于 2013-05-09T16:20:15.547 回答