3

我正在创建一个 Rails 应用程序,用户可以在其中登录并查看各个页面。有些是私人的,有些是公开的。如果用户在查看私人页面时退出,他应该被重定向到 root_path。如果用户在查看公共页面时退出,他应该被重定向到相同的页面(现在他退出后的呈现方式会略有不同)。

我想通过我的 application_controller 中的 after_sign_out_path_for(resource_or_scope) 方法中的条件语句来执行此操作。问题是通常从 pages_controller 文件访问的 @page 变量在此范围内为 nil 和/或不可用。在会话被销毁后,从不同的控制器访问此变量(最后加载的页面)的最佳方法是什么?

谢谢。

4

1 回答 1

1

您可以跟踪会话变量中的最后一页,并在过滤器之前添加以使其在页面控制器中保持最新。

session[:last_page_visited] = @page

您还可以访问它,request.referrer这将为您提供他们退出的页面的 URL。不确定您是否可以从中确定私有/公共,也许使用正则表达式?

于 2012-10-02T21:25:31.147 回答