我正在编写的 Rails 应用程序中使用 Devise,我想让用户在登录或注册后返回到他们所在的位置。
例如,如果我有一个受以下保护的“评论”控制器:
before_filter :authenticate_user!
然后我希望用户点击“立即评论!”按钮(因此被重定向到 CommentsController 中的新操作)进行登录,然后让 Devise 将它们重定向到 CommentsController 中的新操作(或任何位置),而不是应用程序的通用根目录或通用 after_sign_in_path。
浏览 Devise 的 RDOC,我发现这个方法这使得 Devise 看起来至少有能力自己做这样的事情,但我想不出办法。
好的,我做了更多的实验,并利用 Kormie 的信息,我得到了一个可行的解决方案。
据我所知,before_filter authenticate_user!
does not保存返回用户的路线。我所做的是这样的:
首先,我添加了一个额外的before_filter
在我的控制器顶部
before_filter :store_location
before_filter :authenticate_user!
然后,我写了store_location
控制器底部的方法
private
def store_location
session[:user_return_to] = any_old_route_path
end
我并不认为这是完美的,但它对我有用。 (对于其他想要使用它的人来说,缺点是它只支持每个控制器一个返回路径。这就是我自己所需要的,但这只是比我之前使用的每个应用程序一个返回路径稍有改进。 )我真的很感激其他人的见解和建议。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)