在Sinatra的自定义错误块中设置状态代码

时间:2014-01-15 23:20:38

标签: ruby sinatra rack http-status-code-301

我有400状态代码的自定义错误消息:

get '/do' do
  raise ParamXMissingError unless params['x']
end

error ParamXMissingError do
  haml :custom_error_page
end

我希望ParamXMissingError为400,但是当我运行上面的代码并检查Firefox网络工具时,似乎Sinatra实际上返回500而不是400.如何让它显示custom_error_page.haml并返回400?

最好是从错误块中处理状态代码和页面,这不是我在提升ParamXMissingError时会想到的东西。例如,这将是重复的,而不是一个好的解决方案:halt 400, haml(:custom_error_page)

1 个答案:

答案 0 :(得分:16)

卫生署。我只需要设置status 400

error ParamXMissingError do
  status 400
  haml :custom_error_page
end