我正在开发一个允许用户浏览网站并从任何页面登录的应用程序(登录链接在公共标题中)。一旦成功登录,用户当前会从登录页面重定向到 root_url。
重定向到原始页面会更友好。我试图将原始页面的命名路由存储到会话中,但那些似乎是对象,因此无法通过。此外,并非所有路由都带有命名助手。另一方面,当我将文字路径作为字符串传递给redirect_to 时,例如'orders/index',Rails 将/action 解释为id 参数并出错。
会是 Rails 的方式来做到这一点吗?谢谢!
我正在开发一个允许用户浏览网站并从任何页面登录的应用程序(登录链接在公共标题中)。一旦成功登录,用户当前会从登录页面重定向到 root_url。
重定向到原始页面会更友好。我试图将原始页面的命名路由存储到会话中,但那些似乎是对象,因此无法通过。此外,并非所有路由都带有命名助手。另一方面,当我将文字路径作为字符串传递给redirect_to 时,例如'orders/index',Rails 将/action 解释为id 参数并出错。
会是 Rails 的方式来做到这一点吗?谢谢!
request.referrer
您可以通过在控制器内部使用来获取用户来自的页面的 URL 。
(Rails 5 更新)您可以使用 redirect_back 将用户返回到他们刚刚来自的页面。
redirect_back(fallback_location: root_path)
此方法需要您设置回退位置,因为该位置是从浏览器中提取的,并且并不总是保证会设置。
有关更多信息,请参阅导轨指南redirect_back