Доступ к переменной сеанса с помощью jQuery - PullRequest
4 голосов
/ 10 августа 2011

Мне нужно визуализировать HTML-элемент в рельсах, в зависимости от того, установлена ​​переменная сеанса или нет.Можно ли сделать что-то подобное?

Ответы [ 5 ]

4 голосов
/ 10 августа 2011

Сессия на стороне сервера, я не разработчик rails, но в asp.net mvc я сделал вызов ajax, который получает значение Session и возвращает его обратно клиенту. Просто идея.

1 голос
/ 10 августа 2011

Вы не можете получить доступ к любой переменной на стороне сервера со стороны клиента. Вы можете в основном визуализировать значение переменной сеанса в переменной javascript и использовать его на стороне клиента в jquery.

0 голосов
/ 23 мая 2012

Если вы используете rails 3 и храните переменные сеанса с помощью хранилища cookie, то вы должны иметь возможность доступа к переменным сеанса с помощью JS, так же как и к обычному cookie.

0 голосов
/ 10 августа 2011

вы можете визуализировать js view в rails и поместить туда переменную сессии. для информации см. http://railscasts.com/episodes/205-unobtrusive-javascript

0 голосов
/ 10 августа 2011

Небольшая библиотека, которая помогает вам читать и записывать куки.

var cookieHelper = (function () {
    return {
        createCookie: function (name, value, days) {
            var expires = "";
            if (days) {
                var date = new Date();
                date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
                expires = "; expires=" + date.toGMTString();
            }
            document.cookie = name + "=" + value + expires + "; path=/";
        },
        writeSessionCookie: function (cookieName, cookieValue) {
            document.cookie = cookieName + "=" + cookieValue + "; path=/";
        },
        readCookie: function (name) {
            var nameEq = name + "=";
            var ca = document.cookie.split(';');
            var i;

            for (i = 0; i < ca.length; i++) {
                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;
        },
        deleteCookie: function (name) {
            this.createCookie(name, null, -1);
        },
        testSessionCookieEnabled : function() {
           document.cookie ="testSessionCookie=Enabled";
            if (getCookieValue ("testSessionCookie")=="Enabled")
              return true 
            else
              return false;
        }
    };
 }());

Использование:

if(cookieHelper.testSessionCookieEnabled)
{
  cookieHelper.writeSessionCookie("test","session");
}
else
{
  //do something
}

var cookieValue=cookieHelper.readCookie("test");
...