Rails 4 - 当用户按下浏览器后退按钮时更新特定数据

时间:2016-05-03 10:03:18

标签: ruby-on-rails ruby ruby-on-rails-4

我有一个非常基本的"问题,解释简单但很难解决。

在我的主页上,我向用户显示他看到我们可以称为Alpha的页面的次数。

<div>
<%= link_to "page alpha",
            page_alpha_path(deal) %> <br/>
You have seen this page alpha #{deal.number_of_times_viewed} times
</div>

有效。但我希望能够做到以下几点:

  • 用户访问主页并查看该链接,可以阅读&#34;您已经看到此页面 4 次已经#34;
  • 他点击了alpha页面链接并到达了alpha页面
  • 他按下了Chrome的“后退”按钮&#39;现在看到&#39;您已经看到此页面 5

正如你所看到的那样,按下&#39;按下&#39;页面已重新加载次数,它已触发对数据库表的调用,以重新检查他看到页面的次数。

今天不幸的是,无论我怎么做,他仍然会看到&#34; 4 次&#34;

怎么做? 我可以在纯Ruby / Rails中执行此操作,还是需要一些javascript或gon Watch?或者也许是一些Rails UJS?

2 个答案:

答案 0 :(得分:1)

尝试使用call_back清除您的响应缓存。它会起作用。

class ApplicationController < ActionController::Base

    before_filter :set_cache_headers

      private

      def set_cache_headers
        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
    end

答案 1 :(得分:0)

尝试使用此代码:

class ApplicationController < ActionController::Base
before_filter :pages_count

def pages_count
  if current_user
   current_user.update_attributes(:pages_count=>current_user.pages_count+ 1)
   end
end