我有部分,
_flash.html.haml
- flash.each do |type, value|
.flash{ :class => type.to_s }
= value
Run Code Online (Sandbox Code Playgroud)
我正在使用的视图渲染
=render :partial => "flash"
哪个抱怨flash哈希值为nil/undefined.但是,当我这样做时:
=render :partial => "flash", :locals => {:flash => flash}
有用.
为什么部分不能访问flash消息?
maz*_*maz 24
在以前版本的Rails(Rails 2)中,默认局部变量将查找与父级中的partial相同的实例变量.
鉴于你的例子,因为部分被命名,_flash它会自动将实例变量flash作为局部传递给局部.因此,您可以访问它.此行为在2.3中已弃用,并已在Rails 3.0中删除.
这意味着,你总是要明确地传递所有的实例变量locals,甚至flash,就像你在后面的例子中写道.
<%= render :partial => "flash", :locals => {:flash => flash} %>
这与flash每个说法无关,flash是一个实例变量,就像任何其他变量一样.
tot*_*rio 22
因为你的partial被命名为"_flash",你应该有:object local来指定partial里面的变量flash.
更改部分名称,您就可以在内部使用闪光灯,例如:
= render "show_flash_names"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9217 次 |
| 最近记录: |