Rails闪烁,警告,警告和错误未显示;只有通知显示

时间:2011-12-20 18:58:31

标签: ruby-on-rails rails-flash

在我看来,我有:

<% 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应用中是否设置了警告或错误闪烁?

2 个答案:

答案 0 :(得分:8)

我遇到了以下代码的同样问题:

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

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

测试闪光[:警告] .nil?在下一个动作中给出了真实,但是flash [:notice] .nil?是假的(即:未设置警告闪烁,但设置了:通知)。

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

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

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

答案 1 :(得分:3)

Rails对闪存的内容没有任何魔力,除了在它应该时将其清空。

完全取决于您对闪光灯的内容采取适当的措施,即如果您想要显示错误,通知和警告,那么您必须放置

<%= flash[:error] %>

在视图模板或布局中的某个位置,用户可以在其中看到它(并重复:警告,:通知以及您希望以这种方式显示的任何其他闪存键)