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
いいえ、できません。ヘルパーはそれをサポートしていません。定義は次のとおりです。
ただし、実際のケースはヘルパー ロジックよりも単純です。現在の日付から古い日付を減算する新しいヘルパーを作成し、結果の秒数を 1 日の秒数である (60 * 60 * 24) で割り、結果を得ることができます。