我在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)
我不知道我在这里做错了什么。任何建议或猜测???
答案 0 :(得分:0)
如果您使用状态进行渲染,它将从您的public / 404.html文件发送标准404响应。
您可以尝试删除您的public / 404.html文件。