Я пытаюсь переписать простой (в теории) счетчик страниц на основе файлов cookie для платной рекламы, используя встроенные функции cookie Rails. Посетите новую страницу = увеличьте значение «cookie» cookie на единицу и т. Д. Когда посетитель попадает на просмотры X-страниц, покажите paywall. Это в paywall.js файл, который использует jquery.cookie.js работы:Как переписать простую функцию .js page view counter cookie в Rails?
$(document).ready(function() {
// create cookie
var visited = $.cookie('visited'); // visited = 0
var pageTitle = document.title;
if (visited == 7) {
$("p.counter").html("From this point, you will always see fancybox on next visit!");
// open fancybox after 1 secs on 8th visit
setTimeout(function() {
$.fancybox.open({
href: "#inline"
});
}, 1000);
} else {
visited++; // increase counter of visits
$("p.counter span").append(visited);
// set new cookie value to match visits
$.cookie('visited', visited, {
expires: 365, // expires after one year
path: "/"
});
return false;
}
}); // ready
В следующем, помещенный в контроллер приложения, почти работает, но счетчик страниц работает с помощью сеанса [: счетчик]. Количество страниц увеличивается отлично, но он обнуляется и начинает отсчет снова, если закрыть и снова открыть браузер (очевидно):
before_filter :set_visitor_cookie
def set_visitor_cookie
cookies[:visits] = {
value: increment_counter,
expires: 1.year.from_now
}
end
def increment_counter
if session[:counter].nil?
session[:counter] = 0
end
session[:counter] += 1
end
Так как я пишу метод increment_counter или метод set_visitor_cookie непосредственно, просто увеличить значение на 1 на каждом просмотре страницы?