【问题标题】:value fetched from params[] in rails从 rails 中的 params[] 获取的值
【发布时间】:2010-01-05 12:51:15
【问题描述】:

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

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。

【问题讨论】:

    标签: ruby-on-rails time


    【解决方案1】:

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

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

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

    【讨论】:

    • 是的,我发现,如果定义了另一个,我不使用的会设置为 0
    猜你喜欢
    • 2011-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 2012-10-20
    • 1970-01-01
    相关资源
    最近更新 更多