2011-10-20 10 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

このメソッドはprivateであるため、呼び出される場所/方法を知る必要があります。どのように/あなたがコントローラでこのメソッドを呼び出すのかを示してください。 –

答えて

7

エラーの具体的な点では、「authenticate_user」が「作成」アクションの一部として呼び出されていると推測しています。

これが当てはまる場合は、hereの回答もお手伝いします。

... 
respond_with(error, :status => 401, :location => nil) 
... 
:新しく作成された「資源」には実際の場所がないことを意味、私はのように、応答の場所にnilを与えるだろう、これは認証されたセッションの作成の一部であること、しかし、と仮定すると、

リンクされた答えを一度見れば、それはより意味をなさないでしょう。それでも意味をなさないのであれば、私は明確にすることができます。

+0

これは私を助けてくれた、ありがとう。 (:EC => 200、:EM => "なし"、:場所=> @places、:場所=> nilを) – ktkaushik

+0

こんにちは、私は\t \t respond_with、同じ問題をこれをしなかったし、まだ?私はあなたの正確な問題について何も知らない考えると非常に難しいだろう – gal

+0

はあなたが私助けてくださいすることができ – gal

0

私はレンダリングするrespond_withを変更し、それが働いた:

render json: { success: false, message: "an error" }, status: 500 
関連する問題