2013-04-12 54 views
0

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

下面的代码:

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,它工作得很好)。

我错过了什么?

回答

0

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

设计将存储你是在当你尝试登录页面,并重定向到它,当你登录。

这将优先于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?)来改变你去的地方。

+0

谢谢@Joe,你当然是对的。仍然有问题。不,家不需要登录。这是我到目前为止: 在应用程序控制器中,我有 def after_sign_in_path_for(resource) return params [:next] || super end 然后在页面的控制器中,我将下一个参数设置为“/ someurl”。我检查参数,它传递到登录页面,但重定向忽略它,只是超级。 –

+0

被调用的方法是?只需插入“提升'测试'”或其中的东西,看看:) –