當我傳遞Rails time_ago_in_words方法的日期大於1個月前時,它返回一個字符串,其內容類似於「大約N個月前」。我需要將time_ago_in_words的結果顯示爲「天前」
反正有這個方法之日起paramater天返回的距離,即只在30天前,50天前,90天前等等
當我傳遞Rails time_ago_in_words方法的日期大於1個月前時,它返回一個字符串,其內容類似於「大約N個月前」。我需要將time_ago_in_words的結果顯示爲「天前」
反正有這個方法之日起paramater天返回的距離,即只在30天前,50天前,90天前等等
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-09 16:23:36
@SimoneCarletti:使用兼容的輔助方法進行更新。 – PinnyM 2013-05-09 16:28:29
不,你不能。幫手不支持它,這裏是definition。
但是,你的情況實際上比輔助邏輯簡單。您可以創建一個新的幫助器,從當前日期減去舊日期,然後將結果秒數除以(60 * 60 * 24),即一天中的秒數,然後獲得結果。
你可以對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
,所以你不必自己定義。
如果差異小於1天會怎樣? – 2013-05-09 16:15:27
如果距離<24小時,然後顯示分鐘或小時好 – Jason 2013-05-09 16:22:35