我的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
我正在尝试将用户送回他们在登录之前来自的地方,或者,如果没有保存位置,则将他们发送到他们的根页面。
我在我的一个控制器中调用它:
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