Rou*_*oon 5 ruby-on-rails rails-flash
在我看来,我有:
<% flash.now[:error] = "ERROR FLASH" %>
<% flash.now[:notice] = "NOTICE FLASH" %>
<% flash.now[:warning] = "WARNING FLASH" %>
Run Code Online (Sandbox Code Playgroud)
页面渲染时,只显示带有NOTICE FLASH的蓝色信息框.其他两个将不会显示.同样的事情发生在等号上:
<%= flash.now[:error] = "ERROR FLASH" %>
<%= flash.now[:notice] = "NOTICE FLASH" %>
<%= flash.now[:warning] = "WARNING FLASH" %>
Run Code Online (Sandbox Code Playgroud)
我的rails应用程序中是否有设置警告或错误闪烁未出现?
我遇到了以下代码的相同问题:
redirect_to(docs_path, :warning => "I am here!!!") and return if @doc.nil?
Run Code Online (Sandbox Code Playgroud)
使用':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
Run Code Online (Sandbox Code Playgroud)
它不是那么优雅,但它有效!
Rails 对闪存的内容没有任何魔法,只是在应该清空它的时候清空它。
对 Flash 的内容采取适当的操作完全取决于您,即如果您想显示错误、通知和警告,那么您必须将
<%= flash[:error] %>
Run Code Online (Sandbox Code Playgroud)
在视图模板或布局中用户能够看到它的某个位置(并重复 :warning、:notice 和您希望以这种方式显示的任何其他 flash 键)