Rails的params生命时间变量

时间:2012-03-09 20:17:59

标签: ruby-on-rails controller views params

在控制器的标准“索引”方法中,我在params散列中设置了一些值,以便在视图中使用它,如果它没有初始化,在其他情况下什么都不做。

def index
  params[:my_value] ||= {}
end

当我使用include时?视图中params [:my_value]的方法,评估nil.include时出错?

如果params [:my_value]不能为零,为什么会出现这样的错误。如果它为零,则应使用{}初始化其值,这就是|| =运算符所做的。这可能是什么问题?

2 个答案:

答案 0 :(得分:0)

解决方案是在合并方法中。原来那个

a = b.merge(a) 

a.merge(b) {|key, v1, v2| v1 }

做不同的事情,在第一种情况下(这是错误的)nil出现在某处。我还没弄明白为什么会这样,因为merge方法总是返回一个哈希值,当我用第二个替换第一个变量时,一切都还可以。所以我没有看到任何问题...

答案 1 :(得分:0)

rails参数存在,直到请求流程完成

您可以访问将要呈现的内部视图页面中的params,但如果您正在重新指向控制器操作中的另一个页面,则它将无法使用,因为它会中断请求流。