使用redirect_to时显示两次Flash消息(Rails 2)

时间:2011-11-16 17:37:24

标签: ruby-on-rails ruby-on-rails-2

好的,这很奇怪。

flash[:success] = 'some success message'
redirect_to :controller => 'media', :action => 'index'

重定向后正在显示该消息,在点击链接或转到我的应用中的另一个页面后(第一次重定向后),该消息也会再出现一次

2 个答案:

答案 0 :(得分:7)

对于flash,首先要区分render和redirect_to,因为只有在重定向后才会删除flash消息。你没事。

然后,如果您希望在重定向后在下一个请求中看到消息,请使用flash []。如果要在当前请求中看到消息,请使用flash.now []。

看看这是否有帮助。

如果你真的被卡住了,你可以在视图中清除它 - 虽然你正在加载technical debt这样的解决方法黑客 - 但是如果现在正在滴答时间:

- flash.slice(:notice, :message, :error, :success, :warning, :failure).each do |level, value|
  - if value.present?
    %div{:class => "flash #{h level}"}
      = h value
      - flash[level] = nil # set to nil in case the flash was set outside of a redirect

答案 1 :(得分:0)

此外,您必须注意不要在view / layouts / application.html.erb文件中包含Flash消息。它可能会发生:)