当我通过 Rails time_ago_in_words 方法一个大于 1 个月前的日期时,它返回一个字符串,内容类似于“大约 N 个月大”。
无论如何让这种方法返回与日期参数的距离仅以天为单位,即 30 天前、50 天前、90 天前等...
当我通过 Rails time_ago_in_words 方法一个大于 1 个月前的日期时,它返回一个字符串,内容类似于“大约 N 个月大”。
无论如何让这种方法返回与日期参数的距离仅以天为单位,即 30 天前、50 天前、90 天前等...
你可以在上面定义你自己的助手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
因此您不必定义自己的。
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
不,你不能。助手不支持,这里是定义。
但是,您的案例实际上比辅助逻辑更简单。您可以创建一个新的助手,从当前日期中减去旧日期,然后将得到的秒数除以 (60 * 60 * 24) (即一天中的秒数),然后得到结果。