flash [:notice]不能与redirect_to一起使用

时间:2013-03-25 17:46:59

标签: ruby-on-rails-3

我正在使用控制器状态:

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

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

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

  1. flash.keep
  2. flash.keep[:notice] = 'message'
  3. flash[:notice]可与render
  4. 一起使用
  5. redirect_to(controller: 'item', action: 'list', notice: 'message')
  6. flash.now[:notice] = "Hello world"
  7. flash.now['foo'] = "Hello world"在视图中显示<%= flash['foo'] %>
  8. 有一个&lt;%= flash [:notice]%&gt;在布局中
  9. 我在布局中添加了以下代码。当控制器方法具有相同名称的视图时,flash [:notice]正常工作。当我尝试到达另一个没有视图的控制器时会发生问题。

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

    有人可以帮忙吗?

    的信息:

    • Ruby(2.0.0)
    • Rails(3.2.13)

3 个答案:

答案 0 :(得分: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 %>

答案 1 :(得分:0)

尝试使用

flash.now['foo'] = "Hello world"

答案 2 :(得分:0)

我不知道发生了什么。

我更新到ruby 2.0.0并且它刚刚开始工作......