我正在尝试清理 application.html.erb
, 通过将布局的部分移动到部分中。我有以下用于处理闪存错误/通知的代码:
<div id="flash">
<% if flash[:notice] %>
<h3 class="info_box"><%= flash[:notice] %></h3>
<% end %>
<% if flash[:error] %>
<h3 class="error_box"><%= flash[:error] %></h3>
<% end %>
</div>
此代码在
application.html.erb
中运行良好, 直到我将它移到一个名为“_flash.html.erb
”的文件中,并将其替换为以下内容:<%= render 'layouts/flash' %>
在部分中,闪存哈希不是可识别的对象,并导致“当您没想到时,您有一个 nil 对象!”错误。
我已将代码移回 application.html.erb,一切正常。但是我找不到在部分中访问闪存哈希的答案。查看“渲染和布局”的 Rails 指南,我可以看到
render()
有多种方法。将变量传递给部分,但我没能弄清楚。有任何想法吗?
最佳答案
Goliatone 的解决方案似乎有效,但最终却没有。我发现这对我不起作用的原因是我将部分命名为 _flash
.显然,Rails 使用部分的名称(没有 "_"
字符)为部分创建了一个局部变量。所以我有一个变量冲突。一旦我将部分名称更改为 _flash
以外的名称一切正常。我在这里找到了答案:Rails flash[:notice] always nil
关于ruby-on-rails - Rails 3 - 通知和错误 Flash 不能部分呈现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8023396/