2010-01-05 4 views
0

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

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 

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

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

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

ответ

0

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

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

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

+0

Да, я обнаружил, что тот, который я не использую, получает значение 0, если другое определено – Arcath

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

  • Нет связанных вопросов^_^