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

5

好的,这是一个奇怪的问题。

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

重定向后显示了消息,问题是在单击链接或转到应用程序中的另一页后,它还会再次出现(在第一次重定向后)。

2个回答

7
对于Flash,首先要区分渲染和重定向,因为Flash消息只有在重定向后才会被删除。这一点你做得很好。
然后,如果你想让消息在重定向后的下一个请求中被看到,请使用flash[]。如果你想让消息在当前请求中被看到,请使用flash.now[]。
看看这是否有帮助。
如果你真的卡住了,你可以在视图中清除它 - 尽管你正在通过这种变通的方法来负载技术债务 - 但如果现在时间紧迫:
- 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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接