我收到此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
请指出正确的方向。
答案 0 :(得分:2)
在#{}
的第一个参数中,您缺少一些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
中的值无论如何都会成为字符串(当然,除非,你正在做一些超出Rails通常做的params
的额外处理。