Ruby on rails 从rails中的params[]获取的值

Ruby on rails 从rails中的params[]获取的值,ruby-on-rails,time,Ruby On Rails,Time,我正在制作一个日历来显示一些条目,它需要选择月份和年份,我在控制器中使用它来实现: 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", "Septemb

我正在制作一个日历来显示一些条目,它需要选择月份和年份,我在控制器中使用它来实现:

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时,它只是错误地表示“参数超出范围”:



我认为这是因为它给出的字符代码不是2,而是“2”。irb中的to_I返回2。

奇怪的事实:nil.to_I返回0

这是相关的,因为如果未将params[:year]指定为参数(IIRC),它将返回nil,因此@year将设置为0,而不是预期的Time.now.year。这导致您正在解析的字符串为“1/2/0”,这可能是导致错误的原因


这只是我的假设,所以通过输出@month和@year的值来检查它们(或者只输出您试图解析的字符串)来测试它。

是的,我发现,如果定义了另一个,我不使用的将设置为0
<% offset=Time.parse("1/#{@month}/#{@year}").wday-1 %>