4

我从控制器状态使用:

  flash[:notice] = 'message'
  redirect_to(controller: 'item', action: 'list')

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

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

  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 %>   

任何人都可以帮忙吗?

信息:

  • 红宝石 (2.0.0)
  • 导轨 (3.2.13)
4

3 回答 3

5

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

这应该工作得很好:

flash[:notice] = "My message"
redirect_to root_url

或者:

redirect_to root_url, notice: "Hello world"

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

例如,您应该认为这样的事情:

<% if flash[:notice] %>
  <p class="notice"><%= flash[:notice] %></p>
<% end %>
于 2013-03-25T18:15:19.233 回答
0

我不知道发生了什么。

我更新到 ruby​​ 2.0.0,它又开始工作了......

于 2013-03-28T20:59:17.873 回答
0

尝试使用

flash.now['foo'] = "Hello world"
于 2013-03-25T18:01:19.507 回答