Rails 3 - получение последнего доступного действия / контроллера от текущего контроллера - PullRequest
0 голосов
/ 05 августа 2011

Мне нужно иметь возможность установить навигацию на текущей странице в зависимости от того, на какой странице ранее был пользователь.

например,

pageX => pageA (tab1selected) pageY => pageA (tab2selected)

Я знаю, что после чтения вы можете использовать request.env ["HTTP_REFERER"], но я читал, что это не всегда возвращает, если у пользователя есть брандмауэр и т. Д.

Я использую устройство в своем приложении, если это помогает.

Есть ли другой метод?

Спасибо Alex

Ответы [ 2 ]

2 голосов
/ 12 июня 2014

Этот вопрос задавался давным-давно, но для любого, кто его просматривал, мое решение (хотя и немного взломанное) было:

url = Rails.application.routes.recognize_path(request.referrer)
last_controller = url[:controller]
last_action = url[:action]
2 голосов
/ 09 марта 2012

Хотя это и не быстрое решение, оно работает:

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

например,

def index
  ... # your stuff
  set_action("index")
end

protected
def set_action(action_name)
  session[:action]=action_name
  #session[:controller]="my_controller_name"
end

Вы можете воссоздать метод set_action в каждом контроллере или создать помощника, а затем использовать 2 аргумента:

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