【发布时间】:2013-05-03 21:14:22
【问题描述】:
我有两个导轨型号:
里程碑有许多任务 一个任务属于一个里程碑
在我的控制器中,我调用以下内容:
@milestones = Milestone.all
render :json => @milestones.to_json(:include => :tasks)
这给了我:
[ {
"id": 5,
"name": "This is milestone #1",
"tasks": [{
"complete": false,
"id": 60,
"name": "aaaaa",
"milestone_id": 5,
}, {
"complete": false,
"id": 62,
"name": "ccccc",
"milestone_id": 5,
}
]
}, {
"id": 6,
"name": "This is milestone #2",
"tasks": [{
"complete": false,
"id": 65,
"name": "ffffff",
"milestone_id": 5,
}, {
"complete": false,
"id": 66,
"name": "gggggg",
"milestone_id": 5,
}
]
}
]
但我需要能够轻松浏览 JSON,所以我希望能够像这样格式化它(注意每个“子数组”都标有“milestone_ID”或“task_ID”):
[
"milestone_5": {
"id": 5,
"name": "This is milestone #1",
"tasks": [
"task_60":{
"complete": false,
"id": 60,
"name": "aaaaa",
"milestone_id": 5,
},
"task_62":{
"complete": false,
"id": 62,
"name": "ccccc",
"milestone_id": 5,
}
]
},
"milestone_6":{
"id": 6,
"name": "This is milestone #2",
"tasks": [
"task_65":{
"complete": false,
"id": 65,
"name": "ffffff",
"milestone_id": 5,
},
"task_66":{
"complete": false,
"id": 66,
"name": "gggggg",
"milestone_id": 5,
}
]
}
]
有没有人知道如何让 Rails 自定义格式 JSON。即使我必须丢失“里程碑_”部分而只是吐出 ID,那也会很有帮助。
谢谢!
【问题讨论】:
-
是否有特定原因需要将其设为“milestone_6”而不是一系列里程碑?您的输出似乎违背了 json 的许多目的。为什么每个键都需要在值集中包含
id? -
在键中包含 id 将使我能够更轻松地浏览嵌套的 json。我必须做很多替换/更新,因为我使用的是前端 MVC。
标签: javascript ruby-on-rails json api