response_with просит местоположение в случае ошибки - PullRequest
8 голосов
/ 20 октября 2011

У меня довольно стандартный метод аутентификации

  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'

Что я делаю не так?

Ответы [ 2 ]

8 голосов
/ 15 ноября 2011

Судя по конкретному виду вашей ошибки, я предполагаю, что «authenticate_user» вызывается как часть действия «создать».

Если это так, я считаю, что ответ, который я предоставил здесь также поможет вам.

Предполагая, однако, что это является частью создания аутентифицированного сеанса, то есть нет фактического местоположения для вновь созданного «ресурса», я бы предоставил ноль длярасположение ответа, как в:

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

Это будет иметь больше смысла, как только вы посмотрите на связанный ответ.Если это все еще не имеет смысла, я буду рад разъяснить.

0 голосов
/ 10 сентября 2013

Я изменил response_with для рендеринга, и это сработало:

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