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

发布于 2024-11-27 20:17:59 字数 244 浏览 0 评论 0原文

我需要能够根据用户之前所在的页面在当前页面上设置导航。

例如

第X页=>页 A(选项卡 1 已选择) 第Y页=> pageA(tab2selected)

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

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

还有其他方法吗?

谢谢 亚历克斯

I need to be able to set my nav on the current page depending on which page the user was perviously on.

e.g

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

I know from reading you can use request.env["HTTP_REFERER"] but I read this doesnt always get return if the user has a firewall etc

I am using devise in my app if that helps.

Is there another method ?

Thanks
Alex

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

要走干脆点 2024-12-04 20:17:59

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

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

This question was asked a long time ago, but for anyone else viewing this, my solution (though a bit of a hack) was:

url = Rails.application.routes.recognize_path(request.referrer)
last_controller = url[:controller]
last_action = url[:action]
只是我以为 2024-12-04 20:17:59

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

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

例如,

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

Though not a quick solution, it works:

At the end each controller with view, call a method to set your store your current action in the session. If you use several controllers, then create another variable for the controller.

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

You can recreate the set_action method in each controller, or make a helper and then use 2 arguments:

def last_visited(action_name, controller_name)
  session[:action]=action_name
  session[:controller]=controller_name
end
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文