flash [:notice]不适用于redirect_to

bru*_*ado 4 ruby-on-rails-3

我正在使用控制器状态:

  flash[:notice] = 'message'
  redirect_to(controller: 'item', action: 'list')
Run Code Online (Sandbox Code Playgroud)

我不知道为什么通知没有出现.

我试过并检查了很多东西:

  1. flash.keep
  2. flash.keep[:notice] = 'message'
  3. flash[:notice] 工作正常 render
  4. redirect_to(controller: 'item', action: 'list', notice: 'message')
  5. flash.now[:notice] = "Hello world"
  6. flash.now['foo'] = "Hello world"<%= flash['foo'] %>视图
  7. 布局中有<%= flash [:notice]%>

我在布局中添加了以下代码.当控制器方法具有相同名称的视图时,flash [:notice]正常工作.当我尝试到达另一个没有视图的控制器时,会出现问题.

<% if !flash[:notice].blank? %>
    <div class="notice">
        <%= flash[:notice] %>
    </div>
<% end %>

<% if !flash[:alert].blank? %>
    <div class="alert">
        <%= flash[:alert] %>
    </div>
<% end %>   
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?

信息:

  • Ruby(2.0.0)
  • Rails(3.2.13)

Pet*_*der 5

Railsguide:http://guides.rubyonrails.org/action_controller_overview.html#the-flash

这应该完全正常:

flash[:notice] = "My message"
redirect_to root_url
Run Code Online (Sandbox Code Playgroud)

要么:

redirect_to root_url, notice: "Hello world"
Run Code Online (Sandbox Code Playgroud)

但是,您也可能忘记在视图中呈现通知.因此,您没有看到任何通知.

例如,您的视图中应该包含以下内容:

<% if flash[:notice] %>
  <p class="notice"><%= flash[:notice] %></p>
<% end %>
Run Code Online (Sandbox Code Playgroud)