1

我的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

4

1 回答 1

0

原来我在我的哈希中覆盖了 Devise 的条目。我认为:return_to这是 Devise 使用的。我最终以完全不同的方式实现了这一点,但是如果您有问题,请查找名称冲突

于 2012-12-04T21:14:25.907 回答