我正在制作一个日历来显示一些条目,它需要选择月份和年份,我在控制器中使用它来实现:
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.
答案 0 :(得分:0)
奇怪的事实:nil.to_i返回0
这是相关的,因为如果未将params [:year]指定为参数(IIRC),则它将返回nil,因此@year将设置为0而不是预期的Time.now.year。这导致您正在解析的字符串为“1/2/0”,这可能导致错误。
这只是我的假设,所以通过输出@month和@year的值来检查它们(或者只输出你想要解析的字符串)来测试它。