设计登录时重置会话
我在application_controller.rb
文件中定义了以下内容:
def redirect_back_or(default) redirect_to(session[:return_to] || default) session.delete(:return_to) end def store_location session[:return_to] = request.url end def after_sign_in_path_for(resource) r = session[:return_to] || user_root_url session.delete(:return_to) r end
我正在尝试将用户发送回sign_in之前来自他们的地方,或者,如果没有保存位置,则将其发送到他们的根页面。
我在我的一个控制器中调用它:
if current_user.nil? store_location redirect_to home_login_url, alert: "You must be logged in to purchase subscriptions" return end
我通过调试器并观察session[:return_to]
设置,但在我登录并after_sign_in_path_for(resource)
, session[:return_to]
为空。
如何在登录中保留return_to
变量?
我正在运行Rails 3.2.1和Devise 2.1.2
结果我在哈希中覆盖了Devise的条目。 我认为:return_to
是Devise使用的。 我最终以完全不同的方式实现了这一点,但如果遇到问题,请查找名称冲突