响应中缺少HTTP状态

时间:2011-08-25 12:43:30

标签: ruby-on-rails ruby ruby-on-rails-3 ruby-1.9

我在rails 3应用程序之上构建了一个restful api,每当找不到如下所示的实体时,我都会引发自定义异常错误

@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 :(得分:0)

如果您使用状态进行渲染,它将从您的public / 404.html文件发送标准404响应。

您可以尝试删除您的public / 404.html文件。