2011-10-20 29 views
7

Tôi có một phương pháp xác thực khá chuẩnrespond_with là yêu cầu cho vị trí trên lỗi

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 

tôi kêu gọi các API để đảm bảo tính xác thực thất bại.

tôi nhận được một lỗi nêu

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

Tôi đang làm gì sai?

+0

Đây có phải là mã trong 'base_controller.rb'? Dòng nào là dòng 13? –

+0

Phương thức này là riêng tư, vì vậy chúng tôi cần biết nơi/cách thức được gọi. Vui lòng cho biết cách bạn đang gọi phương thức này trong bộ điều khiển. –

Trả lời

7

Do mùi vị cụ thể của lỗi của bạn, tôi đoán rằng "authenticate_user" được gọi là một phần của hành động "tạo".

Nếu đúng như vậy, tôi tin rằng câu trả lời tôi cung cấp here cũng sẽ giúp bạn.

Giả sử, tuy nhiên, đây là một phần của việc tạo ra một phiên chứng thực, có nghĩa là không có vị trí thực tế cho "tài nguyên" mới được tạo ra, tôi sẽ cung cấp con số không cho vị trí phản ứng, như trong:

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

Điều đó sẽ có ý nghĩa hơn khi bạn đã xem câu trả lời được liên kết. Nếu nó vẫn không có ý nghĩa, tôi sẽ vui lòng làm rõ.

+0

điều này đã giúp tôi, cảm ơn. – ktkaushik

+0

Xin chào, tôi đã thực hiện việc này và vẫn gặp sự cố tương tự, \t \t respond_with (: ec => 200,: em => "Không",: địa điểm => @places,: location => nil) – gal

+0

bạn có thể giúp tôi không? – gal

0

tôi đã thay đổi respond_with để render và nó làm việc:

render json: { success: false, message: "an error" }, status: 500 
Các vấn đề liên quan