Rails 3 - 通知和错误闪存无法部分呈现

Don*_*ham 5 views ruby-on-rails partial

我试图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>
Run Code Online (Sandbox Code Playgroud)

这段代码工作得很好application.html.erb,直到我把它移到一个名为" _flash.html.erb" 的文件中并用以下内容替换它:

<%= render 'layouts/flash' %>
Run Code Online (Sandbox Code Playgroud)

在部分中,闪存哈希不是一个可识别的对象,并导致"当你没想到它时,你有一个零对象!" 错误.

我已将代码移回application.html.erb,一切都很好.但我无法找到部分访问闪存哈希的答案.看看Rails指南中的"渲染和布局"我可以看到有多种方法render()可以将变量传递给部分,但是我没有成功地搞清楚它.有任何想法吗?

Don*_*ham 17

Goliatone的解决方案似乎有效,但最终却没有.我发现这对我不起作用的原因是我把我的部分命名_flash.显然Rails使用部分名称(没有"_"字符)为部分创建局部变量.所以我有一个变量冲突.一旦我将部分的名称更改为除了_flash一切完美之外的其他内容.我在这里找到了答案: Rails flash [:notice]总是零