Ruby on rails 构建分组的JSON对象

Ruby on rails 构建分组的JSON对象,ruby-on-rails,json,Ruby On Rails,Json,我正在构建一个Rails/主干应用程序,我将在一张表中向用户展示。 我想创建一个JSON树,它按用户ID/名称分组 这就是它现在的样子 [{ "total_entries": 2 }, { "entries": [{ "id": 21, "status": "pending", "starts_at_date": "2018-02-02", "starts_at_time": "12:

我正在构建一个Rails/主干应用程序,我将在一张表中向用户展示。 我想创建一个JSON树,它按用户ID/名称分组

这就是它现在的样子

[{
    "total_entries": 2
},
{
    "entries": [{
            "id": 21,
            "status": "pending",
            "starts_at_date": "2018-02-02",
            "starts_at_time": "12:00",
            "ends_at_date": "2018-02-02",
            "ends_at_time": "12:00",
            "description": "",
            "ttype": "vacation",
            "sum": 0,
            "user": {
                "id": 1,
                "fullname": "Marcus Lurem"
            },
            "timetype": null,
            "pause": 0,
            "can_manage": true
        },
        {
            "id": 22,
            "status": "pending",
            "starts_at_date": "2018-02-07",
            "starts_at_time": "12:00",
            "ends_at_date": "2018-02-07",
            "ends_at_time": "12:00",
            "description": "",
            "ttype": "doctor",
            "sum": 0,
            "user": {
                "id": 2,
                "fullname": "Anna Palmgren"
            },
            "timetype": null,
            "pause": 0,
            "can_manage": true
        }
    ]
}
]

我需要在名字上分组

这就是我现在构建JSON对象的方式

json.array! [0,1] do |index|
  if index == 0
    json.total_entries @total
  else
    json.entries @events do |event|
      json.extract! event, :id, :starts_at_date, :starts_at_time, :ends_at_date, :ends_at_time, :description, :ttype
            json.sum event.sum
            json.user event.user, :id, :fullname
            json.can_manage true
        end
  end
end
更新

应该差不多是这样的

  • 马库斯卢姆
    • 身份证
    • 地位
    • 在日期开始
    • 描述
  • 安娜·帕姆格伦
    • 身份证
    • 地位
    • 在日期开始
    • 描述

您可以使用以下内容:

json.entries @events.group_by(&:user) do |user, events|
  json.user :id, :fullname
  json.events events do |event|
    json.extract! event, :id, :starts_at_date, :starts_at_time, :ends_at_date, :ends_at_time, :description, :ttype
  end
end

你说的“我需要在名字上分组”是什么意思?您可以添加更多详细信息吗?您是否尝试过从
@events.groupby(&:id)
开始?也许在问题中弹出一个你想要的输出的例子?现在有两个用户。我想对每个人的报告进行分组。因此,第一行是名称,然后是属于该名称/用户的所有报告,然后是下一个名称及其报告,依此类推。@JonathanClark您能否更新
json
此处实际包含的问题
json.array![0,1]do| index|