сохранение состояния с помощью JavaScript в рельсах - PullRequest
0 голосов
/ 25 ноября 2010

, поэтому я предпринял несколько попыток сделать это, но решил, что мне нужен совет от сообщества относительно лучших практик. вот что я пытаюсь сделать.

У меня есть несколько элементов в нескольких представлениях, которые я использую переключатели jquery, чтобы показать или скрыть их. что я хочу сделать, это сохранить их состояние, чтобы они были постоянными по всем запросам. (то есть, если у пользователя панель1 отображается, но панель2 скрыта, при обновлении он остается таким же)

Я думал, что каждый раз, когда пользователь переключает элемент, я могу сохранить отображаемое значение css этого элемента в сеансе. затем после каждой загрузки страницы я мог бы использовать селектор jcery .class, чтобы получить все элементы с классом скажем 'toggle' и применить это к этим элементам.

идея кажется здравой, но я не достаточно сообразителен, чтобы осуществить ее. я не уверен, как выполнить javascript и заставить его анализировать код ruby, за исключением того, что ajax вызывает .js.erb для этого представления.

Я играл с ним часами, но безуспешно. у кого-нибудь есть какие-нибудь предложения, которые помогут мне начать в правильном направлении?

Ответы [ 2 ]

1 голос
/ 25 ноября 2010

Возможно, более простым подходом было бы использование файлов cookie для сохранения состояния ваших переключателей. Это можно сделать с помощью jQuery / JavaScript и полностью избавить от необходимости беспокоиться по этому поводу в Rails.

0 голосов
/ 25 ноября 2010

Я думаю, что есть два способа продолжить.

1) Вы упомянули первое, которое является очень временным: сохранение информации в сеансе или в кеше

2) Если вы хотите, чтобы он был постоянным: сохраните состояние вашего текущего пользователя в базе данных и в вашем кэше для быстрого доступа.

Им обоим требуется ajax-запрос, который вы должны обработать, чтобы ваш сервер знал, что происходит.

Я бы использовал некоторые функции jQuery: щелкните, затем переключите, чтобы добавить или удалить «скрытый» класс (который был бы просто «display: none;» в вашем css). Я бы держал эти функции на стороне клиента (не используя ни js.erj, ни rjs).

В дополнение к переключателю я бы отправил запрос ajax с логическим значением, основанным на наличии или отсутствии скрытого класса на панели, на которую нажимает пользователь. Это будет отображать только: текст => «статус сохранен» или «статус не сохранен».

Когда страница загружается в первый раз, просто добавьте <% = 'hidden' if panel1_show == true%> к классу каждой панели.

Надеется, что это поможет,

Ben

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