2011-10-20 14 views
7

Tengo un método de autenticar bastante estándarrespond_with está pidiendo ubicación en el error

private 

    def authenticate_user 
    @current_user = User.find_by_authentication_token(params[:token]) 
    unless @current_user 
     error = { :error => "Invalid token." } 
     respond_with(error, :status => 401) 
    end 
    end 

Estoy llamando a la API para autenticar asegurar la falla.

me sale un error que indica

ArgumentError (Nil location provided. Can't build URI.): 
    app/controllers/api/v1/base_controller.rb:13:in `authenticate_user' 

¿Qué estoy haciendo mal?

+0

es éste el código en 'base_controller.rb'? ¿Qué línea es la línea 13? –

+0

El método es privado, por lo que necesitamos saber dónde y cómo se llama. Por favor, muestre cómo/dónde está llamando a este método en el controlador. –

Respuesta

7

Por el sabor específico de su error, supongo que se llama a "authenticate_user" como parte de una acción de "crear".

Si ese es el caso, creo que la respuesta que proporcioné here también lo ayudará.

Suponiendo, sin embargo, que esto es parte de la creación de una sesión autenticada, lo que significa que no hay ubicación real para el "recurso" de nueva creación, que suministraría nula para la ubicación respuesta, como en:

... 
respond_with(error, :status => 401, :location => nil) 
... 

Eso tendrá más sentido una vez que eche un vistazo a la respuesta vinculada. Si todavía no tiene sentido, estaré encantado de aclararlo.

+0

esto me ayudó, gracias. – ktkaushik

+0

Hola, hice esto y sigo con el mismo problema, \t \t respon_with (: ec => 200,: em => "None",: places => @places,: location => nil) – gal

+0

¿me pueden ayudar, por favor? – gal

0

me cambió respond_with para rendir y funcionó:

render json: { success: false, message: "an error" }, status: 500 
Cuestiones relacionadas