Отсутствует HTTP-статус в ответе - PullRequest
3 голосов
/ 25 августа 2011

У меня есть успокоительный API, созданный поверх приложения rails 3, я выдаю ошибку пользовательского исключения, когда объект не найден, как показано ниже

@line = @current_account.lines.find(:first, :conditions =>{:title => line_title})
raise CustomExceptionError.new("Line not found for title: #{line_title} under your account",404) if @line.nil?

вот взгляд на класс CustomExceptionError

class CustomExceptionError < StandardError
  attr_accessor :message, :status
  def initialize(message,status=422)
   @message = message
   @status = status
  end
  def to_s
   "#{@message}"
  end
end

и вот метод, который используется для обработки исключения

def custom_error_renderer(exception = nil)
  if exception
     logger.info "Rendering 404: #{exception.message}"
  end
  error = {:error => {:message => exception ? exception.message : "Undefined error."}}
  render :json => error, :status => exception.status

конец

Но когда я смотрю на журнал сервера

18:12:09 action_controller Completed   in 18ms
18:12:09 action_controller Rendering 404: Line not found for title: dater98 under your account

в журнале отсутствует код состояния

если я отрисовываю напрямую, вместо вызова CustomExceptionError

render :status => 404, :json => {:error => {:message=> "Line not found for title: #{line_title} under your account""}}

затем возвращается код состояния.

Completed 404 Not Found in 84ms (Views: 75.7ms)

Понятия не имею, что я здесь делаю неправильно. какие-либо предложения или угадайте ???

1 Ответ

0 голосов
/ 26 августа 2011

Если вы выполняете рендеринг со статусом, он отправит стандартный ответ 404 из вашего публичного файла / 404.html.

Вы можете попробовать удалить файл public / 404.html.

...