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

我试图通过将部分布局移动到局部来清理application.html.erb 。 我有以下代码来处理闪存错误/通知:

 

这段代码在application.html.erb运行良好,直到我将其移动到一个名为“ _flash.html.erb ”的文件中,并将其替换为以下内容:

  

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

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

Goliatone的解决方案似乎有效,但最终却没有。 我发现这不适合我的原因是我已经命名了我的部分_flash 。 显然Rails使用部分名称为部分创建局部变量(不带"_"字符。)所以我有一个变量冲突。 只要我将部分的名称更改为_flash以外的_flash内容,一切_flash正常运行。 我在这里找到了答案: Rails flash [:notice]总是零

您可以在布局中对flash进行条件检查,如果存在,则渲染部分:

 <%= render 'layouts/flash' unless flash.nil?%> 

然后,如果它存在,它将按预期呈现。