从rails中的params []获取的值

时间:2010-01-05 12:51:16

标签: 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", "September", "October", "November", "December"]
end

当你没有指定一个月/年时它工作正常但是当你去/ controller?month = 2时它只是错误地说“争论超出范围”:

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

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

1 个答案:

答案 0 :(得分:0)

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

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

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