在我看来,我有:
<% 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应用中是否设置了警告或错误闪烁?
答案 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] %>
在视图模板或布局中的某个位置,用户可以在其中看到它(并重复:警告,:通知以及您希望以这种方式显示的任何其他闪存键)