现有的问题已经让我达到我想要的90%的方式,但有一个困难。Rails嵌套关联。在渲染:json
我有一个CheckIns
模型,和一个Person
模型。 CheckIns
属于People
。
在我的控制,我有这样的代码:
data = CheckIn.all
render json: { data: data }
对于每个CheckIn
,我想窝在它的相关Person
。过去StackOverflow的问题,建议我这样做:
data = CheckIn.all
render json: data.to_json include: :person
但是,这使得它很难窝我的数据的包装JSON对象里面,就像我原来的,因为to_json
创建一个字符串,而不是Hash
。
我想包装JSON对象,以便我可以遵循标准化的JSON输出,其中data
总是在data:
字段中,并且其他元数据可以附加到响应。
如何获得to_json
的include:
标志的效果,同时还保留包装对象?特别是,对我来说这不是一个有效的答案,因为它确实很难看:
data = CheckIn.all
render json: { data: JSON.parse data.to_json(include: :person) }
谢谢!希望在Rails中有这样的惯用方法。
我强烈建议使用JBuilder或Rabl的,以您的格式JSON而不是.to_json。这两个宝石都提供了更加明确的DSL来格式化您的JSON。 – 2014-11-04 20:36:43
jbuilder是你的朋友... – 2014-11-04 22:56:36
是的,我已经知道JBuilder了,但我特别想知道如果我没有'to_json',我可以做这些东西a)没有向我的项目引入视图。如果它不可行,那很好,但我的回应代是如此明确是很好的。 – 2014-11-05 00:47:38