Вам не хватает нескольких #{}
для интерполяции строк в первом аргументе 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).