Как сохранить данные о том, на какой странице вы находитесь в приложении Rails - PullRequest
0 голосов
/ 22 июля 2010

Вероятно, это будет проще всего, если я объясню, что я пытаюсь сделать. У меня в контроллере приложения Rails три действия, каждое из которых отображает свою страницу. Визуализация страницы выполняется с помощью одной части, которая использует переменные, которые были установлены в коде действия контроллера. Например, на каждой странице есть список, но на одной странице список можно отсортировать. До сих пор я справлялся с этим, устанавливая флаг @sortable в значение true или false в коде своих действий.

Это прекрасно работает при первоначальном запуске действия. Проблема в том, что у меня происходит AJAX (например, добавление нового элемента в список), и когда это происходит, мне нужно снова узнать значение переменной @sortable. Похоже, прошло, хотя технически я все еще на той же странице. То, что я хочу, - это хранилище переменных, которое связано со страницей, на которой вы находитесь.

Каковы ваши рекомендации для этого? (Хранить его в хеше Rails session кажется излишним - слишком большая вероятность того, что неправильное значение останется там в результате какого-то еще не реализованного действия.)

Ben

Ответы [ 2 ]

1 голос
/ 22 июля 2010

В рельсах мне только удалось установить переменные области страницы для начальной установки.

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

1 голос
/ 22 июля 2010

Почему вы не хотите использовать сессию? Как по мне before_filter отлично работает для таких задач

в ApplicationController

before_filter :init_actions

def init_actions
  session[:action] = action_name
  session[:controller] = controller_name
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...