我正在尝试创建一个嵌套的JSON,它包含来自各种db表的数据并使用它返回 format.json {render json:@Model}
例如像这样的json结构:
{"Model1": [
{"id": 3, "name": "newURI", {"Model2": ["id": 4, "name":"vill"]}},
{"id": 1, "name": "bill", {"Model2": ["id": 1, "name":"lily"]}},
{"id": 2, "name": "ton", {"Model2": ["id": 2, "name":"bow"]}},
]}
我已经四处寻找,但并不太成功。我看到Rabl,但生成的嵌套JSON没有很好地形成。如果可以,请你帮助我。感谢
答案 0 :(得分:0)
一种非常简单的方法是:将相关记录包含在那些控制器请求中返回的对象中。我在一个API中使用它,它存在于它自己的命名空间路由中,它带有一个单独的控制器,只返回JSON,从而保持简洁。这是一个show动作的简单示例,它将联系人的地址返回为JSON:
<强> /app/controllers/api/contacts_controller.rb 强>
module Api
class ContactsController < ApplicationController
respond_to :json
...
def show
respond_with Contact.find(params[:id]), :include => :addresses
end
...
end
end
我认为:include => related_model
可以在您使用的任何控制器设置中工作。这将返回与属于此联系人的嵌套地址数组的联系人。当然它也适用于索引操作。
毋庸置疑,您需要先在模型中设置关系,例如has_many:/models/contact.rb中的地址