Как я могу использовать куки для хранения сложной информации и последующего динамического запуска действия на основе данных? - PullRequest
1 голос
/ 27 ноября 2009

У меня есть простая (хотя и несколько запутанная) проблема. По сути, я добавляю элементы, чтобы сделать мое веб-приложение более "настольным". Например, сейчас я пытаюсь получить страницу для динамической загрузки информации в DIV на основе ранее выбранных элементов. В настоящее время я использую cookie для сохранения данных, но я не могу заставить себя решить эту проблему.

У меня есть сценарий со следующими отношениями:

САЙТ has_many ЗДАНИЯ

ЗДАНИЕ has_many МЕТРОВ

METER

Все сущности могут иметь связанные диаграммы. Поэтому, чтобы сделать его общим, я установил отношение has_many для каждого к CHARTS и абстрагировал его следующим образом.

САЙТ has_many CHARTS, как таблица

BUILDING has_many CHARTS, как таблица

METER has_many CHARTS, как таблица

Как только пользователь выбирает элемент в меню слева, я затем использую метод, чтобы определить, для какого элемента требуются диаграммы, и отображаю диаграммы конкретного элемента. Это все отлично работает.

Моя проблема теперь связана с файлами cookie, чтобы либо сохранять данные в независимых ключах (или, возможно, объектах Marshal), чтобы динамически перезагружать данные ранее выбранного элемента при каждой перезагрузке страницы. Для вызова ajax требуется несколько значений, чтобы действие «update» нашло правильный элемент и отобразило его. У меня проблемы с тем, использовать ли Javascript напрямую, пытаться ли вызвать действие или использовать какую-то комбинацию.

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

Лучший

Ответы [ 2 ]

1 голос
/ 27 ноября 2009

Когда пользователь выбирает элемент из меню, сохраните всю необходимую информацию, чтобы повторно выбрать этот элемент в файл cookie. Свяжите метод Javascript с загрузкой страницы и проверьте значение этого файла cookie. Если есть информация, указывающая, что элемент должен быть предварительно выбран, просто вызовите тот же метод Javascript, который вызывается, когда пользователь выбирает новый элемент из меню. Например, если вы используете JQuery, вы можете сделать что-то подобное для привязки к загрузке страницы:

$(document).ready(function() { /* check cookie and do stuff */ }

Еще одна вещь, которую вы можете сделать, - это предварительно отрендерить этот материал в вашем коде RoR, если этот файл cookie существует, поэтому вы не сразу выполняете вызов AJAX при загрузке страницы (поскольку это иногда считается плохим тоном из-за снижения производительности загрузки страницы). ).

0 голосов
/ 27 ноября 2009

Это слишком много для хранения в куки, вы должны либо:

  • Сохранение id cookie-файла на стороне клиента и сохранение данных на стороне сервера, к которым можно получить доступ с помощью id cookie-файла и действительных учетных данных аутентификации.
  • Используйте клиентское хранилище HTML5, такое как localStorage или локальную базу данных.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...