2010-03-28 3 views
0

Как я могу сделать помощника, который скажет мне, сколько недель назад (округлено) с рельсами? Это может быть основано на time_ago_in_words помощника, однако я хочу, чтобы вернуться: «на прошлой неделе», то потом просто two weeks ago, three weeks ago и т.д ...Как я могу сделать помощник `week_ago`?

ответ

4

Попробуйте это:

def my_time_ago_in_words(from_time, include_seconds = false) 
    to_time = Time.now 
    weeks_ago = ((to_time - from_time)/1.week).abs 
    [nil, "last week", "two weeks ago", "three weeks ago"][weeks_ago] || 
     distance_of_time_in_words(from_time, to_time, include_seconds) 
end 

Эта функция будет вести себя то же, что и time_ago_in_words. Когда from_time находится между 1 - 3 неделей назад, это напечатает last week, two weeks ago, three weeks ago, иначе оно напечатает обычное.

+0

Я бы рекомендовал имя 'weeks_ago_in_words', так как он более описательный фактического содержания метода. – Matchu

+1

Эта функция действительно является патчем к 'time_ago_in_words', поскольку она сохраняет существующие функции функции. Правильный подход заключается в исправлении 'time_ago_in_words', возможно, используя' alias_method_chain'. –

Смежные вопросы