【发布时间】:2011-11-05 21:25:06
【问题描述】:
我试图清理application.html.erb,将部分布局移动到部分中。我有以下代码用于处理 Flash 错误/通知:
<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 Guide for "Rendering and Layouts" 我可以看到 render() 有多种方法可以将变量传递到部分中,但我没能弄清楚。有什么想法吗?
【问题讨论】:
-
你试过
<%= render :partial => 'layouts/flash' %>吗?另外,你在哪里打电话给这个render?并保持部分布局我会说。 -
你绝对可以像这样为局部变量提供局部变量:
render 'layouts/flash, :locals => {:flash => flash}。但我不知道这是否真的是最好的选择。 -
Zabba 和 Topek - 感谢您的建议,不幸的是两者都不起作用。这两个建议都导致:“你有一个 nil 对象......”这真的很令人困惑!
标签: ruby-on-rails views partial