使用params登录后重定向

时间:2013-04-12 17:57:48

标签: ruby-on-rails-3 url redirect params

目前,当您以用户身份登录时,无论身在何处,都会被带到您的主页。我想检查网址中的参数并根据该参数重定向。

以下是代码:

def after_sign_in_path_for(resource)
    if params['redirect'] == 'SomeParameter'
      return special_url
    else
      return home_url
    end
end

如果我使用没有参数的常规登录表单,我会被带到home_url。当我尝试去/ user / login?redirect = SomeParameter时,我仍然被带到home_url。顺便说一下,两条路线都是有效的(如果我只测试special_url,它就可以正常工作)。

我错过了什么?

1 个答案:

答案 0 :(得分:0)

如果您还没有登录,主页是否会将您重定向到登录表单?

Devise将存储您尝试登录时所在的页面,并在您登录时重定向到该页面。

这将优先于after_sign_in_path_for,所以如果你要去主页=>自动重定向到登录=> 登录,然后after_sign_in_path_for的返回值并不重要。

如果是这种情况,您可以使用stored_location_for(Devise and stored_location_for: how do you store the return location?)来改变您的去向。