Rails 3: Как узнать, посетил ли пользователь страницу раньше? - PullRequest
4 голосов
/ 14 февраля 2011

У меня есть приложение Rails (использующее Authlogic для аутентификации) с простой анимацией jquery, которую я хочу запускать только один раз при первой загрузке страницы.Я знаю, что ключ в том, чтобы проверить куки или что-то еще, чтобы увидеть, посетил ли пользователь страницу раньше.Прошу прощения, n00bness, я почти ничего не знаю о файлах cookie или сеансах HTTP.

Итак, как лучше всего увидеть, просматривает ли посетитель (даже если он не вошел в систему) страницу дляпервый раз?

РЕДАКТИРОВАТЬ: Хорошо, поэтому я понимаю, что я не совсем ясен.

Я часами смотрел на подобные вопросы и читал Документацию по Rails API для файлов cookieи сеансы, и я до сих пор не могу представить, как реализовать функцию посещен? для каждой страницы моего сайта, для которой будет установлено значение "true" только после того, как пользователь посетил страницу в первый раз.Я посмотрел на предполагаемый «дубликат» вопроса Rails Detect, если пользователь впервые посетил и соответствующие ответы, и все еще не могу понять его.

Вот мой контроллер "Pages":

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);
}
 });

Я толькохотите показать, если пользователь НЕ посещал страницу раньше.Я понятия не имею, как правильно установить cookie в Rails, ни куда его поместить, ни как убедиться, что скрипт анимации может получить доступ к тому же значению cookie.Может кто-нибудь помочь мне?

~ Дан

Ответы [ 2 ]

4 голосов
/ 15 февраля 2011

Вы можете установить 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){}
3 голосов
/ 14 февраля 2011

Игнорировать куки из Javascript.

Используя вопрос, на который ссылаются как на дубликаты, используйте постоянный кук и при первом запуске установите класс на своем теле из Rails (скажем, first-run). Затем проверьте ваш javascript и посмотрите, есть ли у body класс first-run. В этот момент вы можете заставить javascript выполнить свой код первого запуска.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...