2012-10-02 19 views
3

我正在创建一个Rails应用程序,用户登录并查看各种页面。有些是私人的,有些是公共的。如果用户在查看私人页面时退出,他应该重定向到root_path。如果用户在查看公共页面时退出,他应该被重定向到相同的页面(现在退出时会略有不同)。使用Devise有条件登出Rails应用程序

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

谢谢。

+0

后续问题:有没有什么办法可以将使用resource_or_scope参数的页面引用传递给方法? – Andrew

回答

1

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

session[:last_page_visited] = @page 

您还可以访问request.referrer它会给你他们来自何处登出页面的URL。不确定你是否可以使用正则表达式来确定私有/公开的内容?

+0

谢谢你!用一些正则表达式结束使用request.referrer,因为会话在用户注销后被销毁。 – Andrew

相关问题