2011-10-20 10 views
7

Ho un metodo autenticazione piuttosto standardrespond_with sta chiedendo per la posizione in caso di errore

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 

sto chiamando l'API per garantire l'autenticazione non riesce.

ottengo un errore che indica

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

Che cosa sto facendo di sbagliato?

+0

È questo il codice in 'base_controller.rb'? Quale linea è la linea 13? –

+0

Il metodo è privato quindi è necessario sapere dove/come viene chiamato. Mostra come/dove stai chiamando questo metodo nel controller. –

risposta

7

Per il sapore specifico del tuo errore, suppongo che "authenticate_user" sia chiamato come parte di un'azione "crea".

Se questo è il caso, credo che la risposta che ho fornito here ti aiuterà anche.

Supponendo, tuttavia, che questo fa parte della creazione di una sessione autenticata, il che significa non v'è alcuna posizione attuale per la "risorsa" appena creata, vorrei fornire pari a zero per la posizione di risposta, come in:

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

Ciò avrà più senso una volta vista la risposta collegata. Se ancora non ha senso, sarò felice di chiarire.

+0

questo mi ha aiutato, grazie. – ktkaushik

+0

Ciao, ho fatto questo e ho ancora lo stesso problema, \t \t respond_with (: ec => 200,: em => "Nessuno",: places => @places,: location => nil) – gal

+0

puoi aiutarmi per favore? – gal

0

ho cambiato respond_with a rendere e ha funzionato:

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