Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails “我该怎么做?”;“集团”;轨道中的集合';jbuilder?_Ruby On Rails_Ruby_Json_Jbuilder - Fatal编程技术网

Ruby on rails “我该怎么做?”;“集团”;轨道中的集合';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

在我的RoR应用程序(一个JSON API)中,我有一组代表运动队的“球员”和“团队”模型,其中“花名册”模型充当多对多关系中的中间人。在“花名册”视图中,我试图使用jbuilder按团队对球员进行“分组”,但我无法找到正确的代码来实现这一点

我当前的jbuilder视图代码(index.json.jbuilder)如下所示:

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魔法。对这一切还是相当陌生的