Ruby on rails “我该怎么做?”;“集团”;轨道中的集合';jbuilder?
在我的RoR应用程序(一个JSON API)中,我有一组代表运动队的“球员”和“团队”模型,其中“花名册”模型充当多对多关系中的中间人。在“花名册”视图中,我试图使用jbuilder按团队对球员进行“分组”,但我无法找到正确的代码来实现这一点 我当前的jbuilder视图代码(index.json.jbuilder)如下所示:Ruby on rails “我该怎么做?”;“集团”;轨道中的集合';jbuilder?,ruby-on-rails,ruby,json,jbuilder,Ruby On Rails,Ruby,Json,Jbuilder,在我的RoR应用程序(一个JSON API)中,我有一组代表运动队的“球员”和“团队”模型,其中“花名册”模型充当多对多关系中的中间人。在“花名册”视图中,我试图使用jbuilder按团队对球员进行“分组”,但我无法找到正确的代码来实现这一点 我当前的jbuilder视图代码(index.json.jbuilder)如下所示: json.rosters @rosters do |roster| json.team_id roster.team.team_id json
json.rosters @rosters do |roster|
json.team_id roster.team.team_id
json.team_name roster.team.team_name
json.player_id roster.player.player_id
json.first_name roster.player.first_name
json.last_name roster.player.last_name
end
这将输出以下JSON:
{
"rosters": [
{
"team_id": "1",
"team_name": "Dallas Mavericks",
"player_id": "1",
"first_name": "Dirk",
"last_name": "Nowitzki"
},
{
"team_id": "1",
"team_name": "Dallas Mavericks",
"player_id": "2",
"first_name": "Rajon",
"last_name": "Rando"
}
]
}
我的问题:如何让jbuilder以这种格式输出数据
{
"rosters": [
{
"team_id": "1",
"team_name": "Dallas Mavericks",
"players": [
{
"player_id": "1",
"first_name": "Dirk",
"last_name": "Nowitzki"
},
{
"player_id": "2",
"first_name": "Rajon",
"last_name": "Rando"
}
]
}
]
}
一些旁注:
- 对于那些想知道为什么团队成员之间的关系是多对多的人来说,这是因为允许球员更换团队。花名册表有开始和结束日期字段,表示球员在球队的任期,表示花名册随时间的变化;为了避免混乱,上面的例子中没有显示这一点
- 我可能可以在团队视图中更轻松地完成这项工作,但我不想在那里返回花名册信息,因为它主要用于列出团队。如果每次我都包括花名册的话,可能会有很多数据需要无条件地提取
- 我使用Sequel作为我的ORM,而不是ActiveRecord,因此如果解决方案涉及在将源数据发送到jbuilder之前旋转源数据,我不确定是否会应用任何AR魔法。对这一切还是相当陌生的