2014-03-06 42 views
0

我试图设置设计,使任何失败的身份验证重定向到注册页面,除了页面中的标志将重定向到自身。我有以下的自定义失败等级:设计自定义redirect_url

class CustomFailure < Devise::FailureApp 
    def redirect_url 
    new_user_registration_path 
    end 

    def respond 
    if http_auth? 
     http_auth 
    else 
     redirect 
    end 
    end 
end 

与麻烦的是,即使失败后到重定向登录注册。我如何在redirect_url函数中检测请求来自哪个页面,以便我可以相应地重定向?

+1

'request.referer'应该给你从请求来自哪里的URL。 'URI(request.referer).path',如果你只需要相关的url – usha

回答

1

尝试:

redirect_path = "whareveeeeeeer.com" 
redirect_to redirect_path 

我用它在我的DELETE方法:

# DELETE /resource/sign_out 
def destroy 
    redirect_path = after_sign_out_path_for(resource_name) 
    signed_out = (Devise.sign_out_all_scopes ? sign_out : sign_out(resource_name)) 
    set_flash_message :notice, :signed_out if signed_out && is_flashing_format? 
    yield resource if block_given? 

    # We actually need to hardcode this as Rails default responder doesn't 
    # support returning empty response on GET request 
    respond_to do |format| 
     format.all { head :no_content } 
     format.any(*navigational_formats) { redirect_to redirect_path } 
    end 
end