значение извлекается из params [] в рельсах - PullRequest
0 голосов
/ 05 января 2010

Я делаю календарь для отображения некоторых записей, и ему нужно выбрать месяц и год, я использую это в контроллере для достижения этого:

def index
     @month=params[:month].to_i || Time.now.month
     @year=params[:year].to_i || Time.now.year
     @months=[nil, "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]
end

Когда вы не указываете месяц / год, он работает нормально, но когда вы переходите к / controller? Month = 2, это просто говорит «аргумент вне диапазона» для:

<% offset=Time.parse("1/#{@month}/#{@year}").wday-1 %>

Я предполагаю, что это потому, что он дает код символа вместо 2, но "2" .to_i в irb возвращает 2.

1 Ответ

0 голосов
/ 05 января 2010

Странный факт: nil.to_i возвращает 0

Это важно, потому что params [: year] вернет nil, если он не указан в качестве аргумента (IIRC), и поэтому @year будет установлен в 0, а не в ожидаемый Time.now.year. Это приводит к тому, что строка, которую вы анализируете, имеет значение "1/2/0", что, вероятно, вызывает ошибку.

Это только мое предположение, поэтому протестируйте его, выдав значения @month и @year, чтобы проверить их (или просто выведите строку, которую вы пытаетесь проанализировать).

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