【问题标题】:How to create a json from a hash using jBuilder in Rails?如何在 Rails 中使用 jBuilder 从哈希创建 json?
【发布时间】:2015-11-14 09:19:03
【问题描述】:

我有一个这种格式的哈希。

@company_details = {org_id1 => [employee1,employee2,employee3,employee4],org_id2 => [employee1,employee2,employee3,employee4] ... }

我想要类似的东西:

[
    {
        "org_id": "1234",
        "employees": [
            {
                "employee_id": 1,
                "company": "Pepsi",
            },  
            {
                    "employee_id": 2,
                    "company": "Coke",
            },
            {
                "employee_id": 3,
                "company": "Dr. Pepper",
            }
        ]
    },
    {
        "org_id": "3433",
        "employees": [
            {
                "employee_id": 5,
                "company": "Mirinda",
            },  
            {
                    "employee_id": 8,
                    "company": "7up",
            },
            {
                "employee_id": 13,
                "company": "Hersheys",
            }
        ]
    }
]

我尝试了类似的东西

//index.json.jbuilder
@company_details.each do |key,value|
  json.org_id key
  json.employees value
end

如何自定义值以便只显示一些属性?

【问题讨论】:

标签: ruby-on-rails ruby jbuilder


【解决方案1】:

试试这个:

companies = @company_details.reduce([]) do |acc, (key, value)|
  employees = value.map do |employee|
    {
      employee_id: employee.id,
      company_name: employee.company.name
    }
  end
  acc.push({ org_id: key, employees: employees })
end

json.array!(companies)

在不太了解您的 employee 记录的情况下,我猜测变量名称,但您可以根据需要进行调整。

简而言之,这将通过键值对将散列减少为散列数组,同时仅将每个员工记录数组映射到您需要的属性。

【讨论】:

    猜你喜欢
    • 2013-12-14
    • 2015-04-20
    • 2011-10-20
    • 2018-06-13
    • 2012-10-03
    • 2013-09-24
    • 1970-01-01
    • 2016-03-30
    • 1970-01-01
    相关资源
    最近更新 更多