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

いいえ、できません。ヘルパーはそれをサポートしていません。定義は次のとおりです。

ただし、実際のケースはヘルパー ロジックよりも単純です。現在の日付から古い日付を減算する新しいヘルパーを作成し、結果の秒数を 1 日の秒数である (60 * 60 * 24) で割り、結果を得ることができます。

于 2013-05-09T16:20:15.547 に答える