ArgumentError (недопустимая дата) в Ruby On Rails - PullRequest
1 голос
/ 15 мая 2011

Я получаю ArgumentError (недопустимая дата) ошибка и не могу понять, что ее вызывает. Метод вызывается из JavaScript.

  def loadDay
     @first_day_of_week = Date.strptime("{ params[:year].to_s, :params[:month].to_s, params[:day].to_s }", "{ %Y, %m, %d }")

     ...
  end

Лог выглядит так:

  Started GET "/planner/loadDay?day=7&month=5&year=2011" for 127.0.0.1 at 2011-05-15 10:19:43 +0200
  Processing by PlannerController#loadDay as */*
  Parameters: {"day"=>"7", "month"=>"5", "year"=>"2011"}
  Completed   in 1ms

Пожалуйста, укажите мне правильное направление.

1 Ответ

2 голосов
/ 15 мая 2011

Вам не хватает нескольких #{} для интерполяции строк в первом аргументе Date.strptime.Я думаю, что вы хотите сказать следующее:

Date.strptime("{ #{params[:year]}, #{params[:month]}, #{params[:day]} }", "{ %Y, %m, %d }")

Ваш вызов просто передавал эту буквальную строку в strptime:

"{ params[:year].to_s, :params[:month].to_s, params[:day].to_s }"

и без подставления значений из params вstrptime не знал, о чем вы говорите, расстроился и вызвал исключение ArgumentError для обозначения «недопустимой даты».

И вам не нужны вызовы to_s внутри #{}, поскольку #{} делает это для вас, и значения в params будут в любом случае строками (если, конечно, вы не выполняете дополнительную обработку params сверх того, что обычно делает Rails).

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