Javascript 如何在Rails中重写simple.js页面视图计数器cookie函数?
我正在尝试使用Rails内置的cookies功能为付费墙重写一个简单的(理论上)基于cookie的页面计数器。访问新页面=将cookie“count”值增加1,等等。当访问者访问X个页面视图时,显示付费墙。这在使用jquery.cookie.js的paywall.js文件中起作用:Javascript 如何在Rails中重写simple.js页面视图计数器cookie函数?,javascript,ruby,ruby-on-rails-4,cookies,Javascript,Ruby,Ruby On Rails 4,Cookies,我正在尝试使用Rails内置的cookies功能为付费墙重写一个简单的(理论上)基于cookie的页面计数器。访问新页面=将cookie“count”值增加1,等等。当访问者访问X个页面视图时,显示付费墙。这在使用jquery.cookie.js的paywall.js文件中起作用: $(document).ready(function () { // create cookie var visited = $.cookie('visited'); // visited = 0 var p
$(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
放置在应用程序控制器中的以下命令几乎可以工作,但页面计数器正在使用会话[:counter]工作。页面计数完全增加,但如果您关闭并重新打开浏览器,页面计数将重置为零并再次开始计数(显然):
那么,我如何编写increment\u counter方法,或者直接编写set\u visitor\u cookie方法,使每个页面视图上的值增加1呢?好的,已经完成了。我不知道我是否理解为什么增量代码的工作方式与它完全相同(如果有Ruby专家在场,请跳进来),但这三种方法和before过滤器的工作方式与问题中的jquery代码相同,在cookie中递增计数器,而不使用会话,因此它会在浏览器重新启动时保持不变(直到有人清理了他们的饼干,但我们可以担心以后的evercookie或指纹)。你可以用它来打电话给付费墙,另一种popover,或者我猜几乎任何其他的东西
before_filter :set_visitor_cookie
def set_visitor_cookie
cookies[:visits] = {
value: increment_counter,
expires: 1.year.from_now
}
paywall
end
def increment_counter
@pageviews = cookies[:visits].to_i
if @pageviews.nil?
@pageviews == 0
end
@pageviews += 1
end
def paywall
if cookies[:visits].to_i > 5
flash[:success] = "Paywall time"
end
end
将paywall方法中的整数值设置为paywall或popover所需的任意值,并将if子句中的代码更改为当计数器超出计数值时所需的任意值
before_filter :set_visitor_cookie
def set_visitor_cookie
cookies[:visits] = {
value: increment_counter,
expires: 1.year.from_now
}
paywall
end
def increment_counter
@pageviews = cookies[:visits].to_i
if @pageviews.nil?
@pageviews == 0
end
@pageviews += 1
end
def paywall
if cookies[:visits].to_i > 5
flash[:success] = "Paywall time"
end
end