Rails设计Gem重定向登录重定向循环

时间:2012-09-08 14:31:09

标签: ruby-on-rails ruby gem

我在登录后尝试让Devise重定向到用户的上一页时遇到了很大的麻烦。

我试图关注the guide on the Wiki但是当我实现此代码时,它建议:

def after_sign_in_path_for(resource)                                                                                                                      
  sign_in_url = url_for(:action => 'new', :controller => 'sessions', :only_path => false, :protocol => 'http')                                            
  if request.referer == sign_in_url                                                                                                                    
    super                                                                                                                                                 
  else                                                                                                                                                    
    request.referer || "/"                                                                                      
  end                                                                                                                                                     
end     

它总是重定向到根,而不是重定向到上一页。

我发现previous questions有同样的问题但是其中的解决方案没有用。

然后我想我会简化它,只是通过获取referal URL的路径将用户返回到以前的URL,因为我认为这可能会有所帮助,但是我得到了同样的错误:

def after_sign_in_path_for(resource)
  URI(request.referer).path
end

如果我只是将静态路径放在:

中,它确实有效
def after_sign_in_path_for(resource)
  "/somepath"
end

这绝对没问题。我确定我错过了一些明显的东西!

1 个答案:

答案 0 :(得分:1)

看看这个答案:https://stackoverflow.com/a/3104799/1657142。 如链接中所述,request.referer返回HTTP标头中设置的HTTP_REFERER值。可能缺少此值。