首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何定制Rails 3验证错误json输出?

如何定制Rails 3验证错误json输出?
EN

Stack Overflow用户
提问于 2011-08-23 15:12:37
回答 2查看 1.4K关注 0票数 5

默认情况下调用rails.model.to_json

将显示如下所示的内容:

代码语言:javascript
复制
{"name":["can't be blank"],"email":["can't be blank"],"phone":["can't be blank"]}

我需要生成一些可以在服务客户端上使用的状态代码,而不是消息:

代码语言:javascript
复制
[{"field": "name", "code": "blank"}, {"field": "email", "code": "blank"}]

这种方法非常类似于github api v3错误-- http://developer.github.com/v3/

我如何使用Rails来实现这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-24 02:02:18

在您的模型上,您可以修改json操作的方式。例如,让我们假设您有一个ActiveRecord模型Contact。可以覆盖as_json以修改渲染行为。

代码语言:javascript
复制
def Contact < ActiveRecord::Base

  def as_json
    hash = super

    hash.collect {|key, value|
      {"field" => key, "code" => determine_code_from(value)} 
    }
  end

end

当然,您也可以在Contact上或甚至在控制器中的单独方法中生成json。您只需稍微更改渲染方法即可。

代码语言:javascript
复制
render @contact.as_my_custom_json
票数 0
EN

Stack Overflow用户

发布于 2011-08-23 17:50:23

在您的控制器中,当您呈现输出时,在JSON内容中,添加以下内容:

代码语言:javascript
复制
render :json => @yourobject, :status => 422 # or whatever status you want.

希望这能有所帮助

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7157442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档