HeJ小鼠, 我有个问题: 我在我的rails应用程序中使用flash [:notice]。 用户进入页面并创建新对象。 flash信息显示“已创建”。现在他点击页面上的链接。如果他使用浏览器的“后退”按钮返回,则再次显示闪光按摩。 flash.now [:notice]也不起作用(我想和我测试过)。问题是文件没有新的渲染。
你有什么想法可以阻止吗?谢谢!
答案 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