我有一个Rails应用程序(使用Authlogic进行身份验证)和一个简单的jquery动画,我只想在第一页加载时运行一次。我知道关键是检查cookie或其他东西,以查看用户之前是否访问过该页面。请原谅我的n00bness,我对HTTP cookie或会话几乎一无所知。
那么,查看访问用户(即使他们尚未登录)是否第一次查看页面的最佳方法是什么?
编辑:好的,所以我意识到我并不完全清楚。
我花了好几个小时查看类似的问题并阅读用于Cookie和会话的Rails API文档,但我仍然无法想象如何为我网站中的每个网页实现访问过的?功能只有在用户第一次访问页面后才会设置为“true”。我查看了所谓的“重复”问题 Rails Detect If User's Very First Visit 以及相应的答案,但仍无法弄明白。
这是我的“页面”控制器:
def home
@title = "Home"
end
def contact
@title = "Contact Us"
end
DD
我的jquery javascript做了一个简单的动画:
$(document).ready(function()
{
if (!$.cookie('visited')) {
$('.title .flying-text').css({opacity:0});
$('.title .active-text').animate({
opacity:1,
marginTop: "-150px",
}, 5000);
}
});
我只希望它显示用户之前是否未访问该页面。我不知道如何在Rails中正确设置cookie,也不知道如何设置它,也不知道如何确保动画脚本可以访问完全相同的cookie值。有人可以帮我一把吗?
〜丹
答案 0 :(得分:4)
您可以像这样设置一个cookie:
cookies[:welcomed] = {:value => true, :expires => Time.now + 6.months}
并从jquery创建一个小函数
function readCookie(name) {
var nameEQ = name + "=", ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i += 1) {
var c = ca[i];
while (c.charAt(0) === ' ') {
c = c.substring(1, c.length);
}
if (c.indexOf(nameEQ) === 0) {
return c.substring(nameEQ.length, c.length);
}
}
return null;
}
并将其称为#in js
if (readCookie('welcomed') == null){}
答案 1 :(得分:3)
忽略Javascript中的cookie。
使用引用为重复的问题,使用永久性cooke,并在第一次运行时,在Rails上设置一个类(让我们说first-run
)。然后,检查您的javascript,看看body
是否有课程first-run
。此时,您可以让javascript执行它的第一个运行代码。