2011-10-20 50 views
7

我有一個非常標準的身份驗證方法respond_with是要求位置上的錯誤

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 

我調用API,以確保身份驗證失敗。

我得到一個錯誤,說明

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

我在做什麼錯?

+0

這是在'base_controller.rb'的代碼?哪一行是第13行? –

+0

的方法是私有的,所以我們需要知道在哪裏/它是如何被調用。請在控制器中顯示您如何/在哪裏調用此方法。 –

回答

7

通過你的錯誤的特定味道,我猜測「的authenticate_user」被稱爲「建立」行動的一部分。

如果是這樣的話,我相信我提供here的回答將幫助你。

假設,但是,這是建立一個驗證會話,這意味着有新創建的「資源」,沒有實際的位置,我會爲響應位置提供零,如在部分:

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

一旦你看看鏈接的回答會更有意義。如果它仍然沒有意義,我會很樂意澄清。

+0

這幫了我,謝謝。 – ktkaushik

+0

嗨,我這樣做,仍然同樣的問題,\t \t respond_with(:EC => 200:EM => 「無」,:地方=> @places,:位置=>無) – gal

+0

你能幫助我嗎? – gal

0

我改變respond_with渲染和它的工作:

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