5

好吧,这很奇怪。

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

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

4

2 回答 2

7

对于 flash,首先要区分 render 和 redirect_to,因为 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
于 2011-11-16T17:50:21.153 回答
0

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

于 2014-04-26T16:43:43.960 回答