5

在我看来,我有:

<% flash.now[:error] = "ERROR FLASH" %>
<% flash.now[:notice] = "NOTICE FLASH" %>
<% flash.now[:warning] = "WARNING FLASH" %>

当页面被渲染时,只有带有 NOTICE FLASH 的蓝色信息框出现。其他两个不会显示。等号也会发生同样的事情:

<%= flash.now[:error] = "ERROR FLASH" %>
<%= flash.now[:notice] = "NOTICE FLASH" %>
<%= flash.now[:warning] = "WARNING FLASH" %>

我的 rails 应用程序中是否有设置不显示警告或错误闪烁?

4

2 回答 2

8

我在使用以下代码时遇到了同样的问题:

redirect_to(docs_path, :warning => "I am here!!!") and return if @doc.nil?

使用 ':notice' 和 ':alert' 而不是 ':warning' 按预期工作。看来您可以直接在重定向方法中设置 :notice 和 :alert ,但不能设置 :error 和 :warning 。

测试 flash[:warning].nil?在下一个动作中给出了 true,但是 flash[:notice].nil? 为假(即 :warning flash 未设置,但 :notice 已设置)。

为了解决这个问题,我在重定向之前设置了 flash[:warning] 值,如下所示:

if @doc.nil?
  flash[:warning] =  "I am here!!!"
  redirect_to(docs_path) and return 
end

它不是那么优雅,但它有效!

于 2012-01-28T21:31:10.097 回答
4

Rails 对闪存的内容没有任何作用,只是在应该清空它时清空它。

对 flash 的内容采取适当的行动完全取决于你,即如果你想显示错误、通知和警告,那么你必须把

<%= flash[:error] %>

在您的视图模板或布局中,用户将能够看到它的某个位置(并重复 :warning、:notice 和您希望以这种方式显示的任何其他 flash 键)

于 2011-12-20T19:11:51.597 回答