【问题标题】:flash[:notice] is shown on browser back againflash[:notice] 再次显示在浏览器后面
【发布时间】:2011-03-23 04:10:07
【问题描述】:
嘿嘿,
我有个问题:
我在我的 rails 应用程序中使用 flash[:notice]。
用户来到页面并创建一个新对象。 Flash 消息显示“已创建”。现在他点击页面上的一个链接。如果他使用浏览器的“返回”按钮返回,则再次显示闪烁消息。
flash.now[:notice] 也不起作用(我认为并且我测试过)。问题是文件没有新的渲染。
您有什么想法可以防止这种情况发生吗?谢谢!
【问题讨论】:
标签:
ruby-on-rails
flash
notice
【解决方案2】:
问题不在于 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
【解决方案3】:
我知道discard方法,问题不是flash[:notice]的功能,问题是浏览器没有再次渲染文件...
我想我必须使用 javascript 来修复它...
【解决方案4】:
我一般用以下
<% if flash[:notice] %>
<%= flash[:notice] %>
<% flash[:notice]=nil %>
<% end %>
你也可以使用discard方法
<% if flash[:notice] %>
<%= flash[:notice] %>
<% flash.discard(:notice) %>