ruby-on-rails - Rails 3 - 通知和错误 Flash 不能部分呈现

标签 ruby-on-rails views 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>

此代码在 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/

相关文章:

html - 如何将 "link_to"放在整张卡下?

ruby-on-rails - 更改 bundle 安装 Ruby 版本

c# - 一个文件中只允许有一条 'model'语句

json - 有没有办法在 Swift 中仅从 JSON 部分创建对象?

asp.net-mvc - 在 ASP.NET MVC 中,如何使部分 View 对所有 Controller 可用?

ruby-on-rails - 如何在 Liquid 中本地化日期?

ruby-on-rails - 在 Rails 5 Application Record 类中包含一个模块

ruby-on-rails - Rails 中的 DRYing View (number_to_currency)

drupal-7 - 如何在 Drupal 的主分类页面中显​​示子术语?

ruby-on-rails - :silence:Symbol error 的未定义方法 `call'