2016-05-03 6 views
0

У меня есть очень «базовая» проблема, которую просто объяснить, но трудно решить.Rails 4 - Обновить данные, когда пользователь нажимает кнопку «Назад» браузера

На моей домашней странице я показываю пользователю количество раз, когда он видел страницу, которую мы можем назвать Альфой.

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

Это работает. но я бы хотел, чтобы быть в состоянии сделать следующее, например:

  • пользователь переходит на домашнюю страницу и видит связь и может читать „Вы видели эту страницу альфа раз раз уже“
  • он нажимает на ссылку альфа страницы и прибывают и альфа страницу
  • он нажимает «кнопку назад» Chrome и видит теперь «вы видели эту страницу альфа раз

Как вы видите, даже на„выдавливают“ страница перезагрузило количество раз, оно вызвало вызов таблицы базы данных, чтобы перепроверять количество раз, когда он видел эту страницу.

Сегодня, к сожалению, все, что я пытался, он по-прежнему видит « раз»

Как это сделать? Могу ли я сделать это в чистом Ruby/Rails или, возможно, мне нужен javascript или gon Watch? или, может быть, некоторые Rails UJS?

+0

следовать за этим ссылки могут помочь вам http://stackoverflow.com/questions/36188063/refresh-all-information-on-back-button-press- ruby-on-rails http://stackoverflow.com/questions/711418/how-to-prevent-browser-page-caching-in-rails –

+0

@NarasimhaReddy спасибо, я видел это, но не было «принятия» предлагаемого ответы, поэтому я думаю, что их предложения не сработали – Mathieu

ответ

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 
+0

Я попробую на этой неделе. проблема в том, что здесь я испортил весь кеш, тогда как в моем вопросе я ТОЛЬКО хочу обновить одну маленькую часть страницы, {real updated} количество просмотров – Mathieu

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 
Смежные вопросы