来自Heroku的JSON有效负载

时间:2011-10-15 01:04:51

标签: ruby json heroku

当我从我的Rails heroku站点获取JSON有效负载时(这是一个使用'generate scaffold'命令创建的基本简单测试站点),我得到这样的结果:

[
{"client":
    {"name":"Fred Flintstone",
    "id":3,
    "room":"333",
    },
{"client":
    {"name":"Wilma Flintstone",
    "id":4,
    "room":"334",
    }
}

我真的希望得到更符合KVC的东西,比如:

{"clients":
[
{"client":
    {"name":"Fred Flintstone",
    "id":3,
    "room":"333",
    },
{"client":
    {"name":"Wilma Flintstone",
    "id":4,
    "room":"334",
    }
}
]

}

有谁知道怎么做?在Ruby方面或Heroku方面是否有一些代码会给我这种格式?

库尔特

1 个答案:

答案 0 :(得分:1)

在控制器中,而不是

render :json => @clients

DO

render :json => {@clients.first.class.name.underscore.pluralize => @clients}

render :json => {@clients.first.class.table_name => @clients}

这与heroku没有任何关系。

您可以使用以下方式打开/关闭生成的对象是否将对象的名称作为顶级键:

ActiveRecord::Base.include_root_in_json = true

但据我所知,没有配置选项来做你想要的事情。

请参阅http://apidock.com/rails/ActiveRecord/Serialization/to_json

如果您希望在多个控制器中执行此操作,则另一个选项是将此行为移至帮助程序并使用它。无论相关模型如何,上述逻辑都将起作用。

即:

def kvcize(array)
  {array.first.class.table_name => array}
end

然后

render :json => kvcize(@clients)