我正在创建一个 Rails 应用程序,用户可以在其中登录并查看各种页面。有些是私有(private)的,有些是公共(public)的。如果用户在查看私有(private)页面时注销,他应该被重定向到 root_path。如果用户在查看公共(public)页面时注销,他应该被重定向到同一页面(在他注销后呈现略有不同)。
我想在我的 application_controller 的 after_sign_out_path_for(resource_or_scope) 方法中使用条件语句来执行此操作。问题是通常从 pages_controller 文件访问的 @page 变量为 nil 和/或在此范围内不可用。在 session 被销毁后从不同的 Controller 访问这个变量(最后加载的页面)的最佳方法是什么?
谢谢。
最佳答案
您可以跟踪 session 变量中的最后一页,并在过滤器之前添加以使其在页面 Controller 中保持最新。
session[:last_page_visited] = @page
您还可以访问 request.referrer
,这将为您提供他们退出页面的 URL。不确定您是否可以从中确定私有(private)/公共(public),也许使用正则表达式?
关于ruby-on-rails - 使用 Devise 在 Rails 应用程序中有条件地注销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12698397/