Использование distance_of_time_in_words в Rails - PullRequest
0 голосов
/ 21 ноября 2011

У меня есть начальный месяц (3), начальный год (2004), и у меня есть конечный год (2008).Я хочу рассчитать время в словах между начальной и конечной датами.Это то, что я пытаюсь, и это не работает ..

# first want to piece the start dates together to make an actual date
# I don't have a day, so I'm using 01, couldn't work around not using a day
st = (start_year + "/" + start_month + "/01").to_date
ed = (end_year + "/01/01").to_date

# the above gives me the date March 1st, 2004
# now I go about using the method 
distance_of_time_in_words(st, ed)

.. это выдает ошибку "строка не может меня принудительно привести к fixnum"Кто-нибудь видел эту ошибку?

Ответы [ 2 ]

1 голос
/ 21 ноября 2011

Вы не можете просто объединять строки и числа в Ruby.Вам следует либо преобразовать числа в строки, как предложено mliebelt , либо использовать интерполяцию строк следующим образом:

st = "#{start_year}/#{start_month}/01".to_date

Но для вашего конкретного случая я думаю, что в этом нет необходимостиструны на всех.Вы можете сделать это так:

st = Date.new(start_year, start_month, 1)
ed = Date.new(end_year, 1, 1)
distance_of_time_in_words(st, ed)

или даже так:

st = Date.new(start_year, start_month)
ed = Date.new(end_year)
distance_of_time_in_words(st, ed)

См. Date class документы для получения дополнительной информации.

0 голосов
/ 21 ноября 2011

Учитывая, что контекст, в котором вы вызываете метод, является тем, который знает методы из ActionView::Helpers::DateHelper, вы должны изменить следующее:

# first want to piece the start dates together to make an actual date
# I don't have a day, so I'm using 01, couldn't work around not using a day
st = (start_year.to_s + "/" + start_month.to_s + "/01").to_date
ed = (end_year.to_s + "/01/01").to_date

# the above gives me the date March 1st, 2004
# now I go about using the method 
distance_of_time_in_words(st, ed)
=> "almost 3 years"

Итак, я добавил вызовы к to_s для номеров, чтобы убедиться, что операция + работает. Могут быть более эффективные способы построения даты, но вам достаточно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...