繁体   English   中英

Rails的生存时间可变

[英]Rails life time of params variable

在控制器的标准“索引”方法中,我在params哈希中设置了一些值,以便在尚未初始化的情况下在视图中使用它,否则在其他情况下什么也不做。

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

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

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

解决方案是在合并方法中。 事实证明

a = b.merge(a) 

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

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

Rails参数存在直至请求流完成

您可以访问要呈现的视图页面内部的params但是如果您正在重定向到控制器动作中的另一个页面,则参数将不可用,因为它会中断请求流。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM