Rails 3 - Ruby работает в JS, если - PullRequest
0 голосов
/ 23 марта 2012

Почему выполняется код ruby, даже если он находится внутри оператора jQuery if?

Я работаю с модалом (Twitter bootstrap) и устанавливаю сеанс, когда модал отображается / скрывается, у модала есть такой код:

$("#modal").on("shown", function () {
  <% session[:modal] = true %>
})

...

$("#modal").on("hidden", function () {
  <% session[:modal] = nil %>
})

То, что я хочу, это установить сеанс, когда модальное окно открыто, чтобы метод знал, когда он был открыт, и установить его равным nil, чтобы тот же метод знал, когда он был закрыт.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 24 марта 2012

Если вы хотите, чтобы клиент что-то изменил в сеансе rails, вам необходимо отправить ajax-запрос на сервер.

Другой вариант может заключаться в использовании cookie-файлов сеанса вместо использования сеанса rails.Сессионные куки-файлы хороши, если вы просто устанавливаете небольшие кусочки данных в браузере.Есть несколько плагинов cookie для jquery. Вот один на github.Вы могли бы сделать что-то вроде этого:

$("#modal").on("shown", function () {
  $.cookie('is_modal', '1');
})

Обновление: я только что прочитал ваш другой комментарий.Если вы выполняете серверную логику на основе этого значения, то да, вам нужно сообщить серверу вызов ajax.

0 голосов
/ 24 марта 2012

Ваш код ruby ​​выполняется на сервере и JavaScript в браузере. Таким образом, весь код ruby ​​выполняется до javascript.

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