flash [:notice]再次显示在浏览器上

时间:2010-07-30 09:55:37

标签: ruby-on-rails flash notice

HeJ小鼠, 我有个问题: 我在我的rails应用程序中使用flash [:notice]。 用户进入页面并创建新对象。 flash信息显示“已创建”。现在他点击页面上的链接。如果他使用浏览器的“后退”按钮返回,则再次显示闪光按摩。 flash.now [:notice]也不起作用(我想和我测试过)。问题是文件没有新的渲染。

你有什么想法可以阻止吗?谢谢!

4 个答案:

答案 0 :(得分:3)

我通常使用以下

<% if flash[:notice] %>
  <%= flash[:notice] %>
  <% flash[:notice]=nil %>
<% end %>

您也可以使用discard方法

<% if flash[:notice] %>
  <%= flash[:notice] %>
  <% flash.discard(:notice) %>

答案 1 :(得分:3)

问题不是flash变量,而是浏览器缓存。这个解决方案适用于我使用Rails 3.2(来自此线程How to prevent browser page caching in Rails):

在application_controller.rb中:

before_filter :set_cache_buster

  def set_cache_buster
    response.headers["Cache-Control"] = "no-cache, no-store, max-age=0, must-revalidate"
    response.headers["Pragma"] = "no-cache"
    response.headers["Expires"] = "Fri, 01 Jan 1990 00:00:00 GMT"
  end

答案 2 :(得分:0)

我知道丢弃方法,问题不是flash [:notice]的功能,问题是浏览器没有再渲染文件... 我想我必须使用javascript修复它...

答案 3 :(得分:0)

将缓存设置为no-cache,no-store将导致对服务器的不必要请求。相反,您可以使用浏览器的localStorage / sessionStorage来实现所需的效果。

我在这里写了详细的答案:https://stackoverflow.com/a/41921476/6590834