Rails 3 - 从当前控制器检索上次访问的动作/控制器

时间:2011-08-05 09:43:41

标签: ruby-on-rails httpwebrequest devise

我需要能够在当前页面上设置我的导航,具体取决于用户当前所在的页面。

例如

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

我从阅读中知道你可以使用request.env [“HTTP_REFERER”],但我读到如果用户有防火墙等,并不总是返回

如果有帮助,我在我的应用程序中使用设计。

还有其他方法吗?

由于 亚历

2 个答案:

答案 0 :(得分:2)

虽然不是一个快速的解决方案,但它确实有效:

最后,每个控制器带有视图,调用方法将您的商店设置为会话中的当前操作。如果使用多个控制器,则为控制器创建另一个变量。

e.g。

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

答案 1 :(得分:2)

很久以前就提出过这个问题,但对于其他任何观看此问题的人来说,我的解决方案(虽然有点像黑客)是:

url = Rails.application.routes.recognize_path(request.referrer)
last_controller = url[:controller]
last_action = url[:action]