默认情况下调用rails.model.to_json
将显示如下所示的内容:
{"name":["can't be blank"],"email":["can't be blank"],"phone":["can't be blank"]}我需要生成一些可以在服务客户端上使用的状态代码,而不是消息:
[{"field": "name", "code": "blank"}, {"field": "email", "code": "blank"}]这种方法非常类似于github api v3错误-- http://developer.github.com/v3/
我如何使用Rails来实现这一点?
发布于 2011-08-24 02:02:18
在您的模型上,您可以修改json操作的方式。例如,让我们假设您有一个ActiveRecord模型Contact。可以覆盖as_json以修改渲染行为。
def Contact < ActiveRecord::Base
def as_json
hash = super
hash.collect {|key, value|
{"field" => key, "code" => determine_code_from(value)}
}
end
end当然,您也可以在Contact上或甚至在控制器中的单独方法中生成json。您只需稍微更改渲染方法即可。
render @contact.as_my_custom_json发布于 2011-08-23 17:50:23
在您的控制器中,当您呈现输出时,在JSON内容中,添加以下内容:
render :json => @yourobject, :status => 422 # or whatever status you want.希望这能有所帮助
https://stackoverflow.com/questions/7157442
复制相似问题