Rails 3:如何在JSON请求中返回错误?

don*_*ald 39 api json ruby-on-rails-3

当用户向我的API发出JSON/XML请求时,如何返回800,404等错误?

我试过了

error 404, {:error => "ERror".to_json }
Run Code Online (Sandbox Code Playgroud)

没有成功.

此外,我试图放一个"respond_to"但它也不起作用(它复制了respond_to并给出了错误).

谢谢

oma*_*oma 66

与使用html返回此类错误的方式相同,它是HTTP标头的一部分.

render json: @myobject, status: :unprocessable_entity
Run Code Online (Sandbox Code Playgroud)

更新,回复评论:

您可以从Rack获取所有状态代码.Rails将符号化状态传递给Rack

Rack::Utils.status_code(options[:status])
Run Code Online (Sandbox Code Playgroud)

它只是将符号与状态列表匹配(字符串转换为符号)以下是吸烟清单:https://github.com/rack/rack/blob/master/lib/rack/utils.rb#L575 -L638

滚动一点,你会看到status_code方法.阅读源代码很有趣!

  • 该列表已下载到https://github.com/rack/rack/blob/master/lib/rack/utils.rb#L539 (4认同)
  • 您不需要在向下游发送的对象上调用`to_json`.`render`为你调用.所以在你的例子中,`render:json => @ myobject,:status =>:unprocessable_entity`就足够了.:)此外,这里是状态代码列表:[https://github.com/rack/rack/blob/master/lib/rack/utils.rb#L549-L608](https://github.com/rack /rack/blob/master/lib/rack/utils.rb#L549-L608) (2认同)