Joh*_*ohn 5 authentication ruby-on-rails devise
我正在编写一个Rails应用程序中使用Devise,我想让用户在登录或注册后回到原来的位置.
例如,如果我有一个"评论"控制器受以下保护:
before_filter :authenticate_user!
Run Code Online (Sandbox Code Playgroud)
然后我希望点击"立即评论"的用户!按钮(因此重定向到CommentsController中的新操作)登录,然后让Devise将它们重定向到CommentsController中的新操作(或者它们在哪里),而不是应用程序的通用根,或者通用的after_sign_in_path.
通过RDOC for Devise,我发现这个方法看起来好像Devise至少有能力独自完成这样的事情,但我无法找到方法.
好的,所以我做了一些实验,并且使用Kormie的信息,我有一个有效的解决方案.
据我判断,before_filter authenticate_user!并没有保存的路径返回给用户.我做的是这样的:
首先,我before_filter在控制器顶部添加了一个额外的功能
before_filter :store_location
before_filter :authenticate_user!
Run Code Online (Sandbox Code Playgroud)
然后,我store_location在控制器的底部编写了该方法
private
def store_location
session[:user_return_to] = any_old_route_path
end
Run Code Online (Sandbox Code Playgroud)
我并不认为这是完美的,但它对我有用.(其他任何想要使用它的人的缺点是,它只支持每个控制器一个返回路径.这就是我自己所需要的,但它只比我之前使用的每个应用程序的一个返回路径略有改进.我真的很感激别人的见解和建议.