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

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应用程序中是否有设置警告或错误闪烁未出现?

CHs*_*fer 8

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

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)

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


Fre*_*ung 4

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

对 Flash 的内容采取适当的操作完全取决于您,即如果您想显示错误、通知和警告,那么您必须将

<%= flash[:error] %>
Run Code Online (Sandbox Code Playgroud)

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