使用jbuilder时如何显示对象的属性?

How to display attributes of object when using jbuilder?

我想展示一个员工,他们的所有报告如下:

{
name :'ceo'
salary: '1000000'
directs:
    {
        name: 'sally',
        salary: '100000'
    },
    {
        name: 'phil',
        salary: '100000'
    }
}

我肯定有一个缺点,就是我只能得到 directs 下的所有东西。这是 show 操作的 jbuilder 代码:

json.extract! @employee, :name, :salary

json.array! @employee.direct_reports do |d|
    json.name d.name
    json.salary d.salary
end

我已经尝试了代码第一部分的几次迭代,但我不断地在 rest 调用中看到以下内容,例如 http://localhost:3000/employees/1.json:

[    
    {
        name: 'sally',
        salary: '100000'
    },
    {
        name: 'phil',
        salary: '100000'
    }
]

得到这个:

    {
name :'ceo'
salary: '1000000'
directs:
    {
        name: 'sally',
        salary: '100000'
    },
    {
        name: 'phil',
        salary: '100000'
    }
}

你需要

json.extract! @employee, :name, :salary
json.name :name
json.salary :salary


json.array! @employee.direct_reports do |d|
    json.name d.name
    json.salary d.salary
end

确保你在相应的控制器中有 respond_to :json 并且你已经正确设置了 @employee 变量。

同时尝试停止和启动 rails 应用程序。

查看这个 jbuilder 片段:

json.extract! @employee, :name, :salary

json.directs @employee.direct_reports do |d|
  json.name d.name
  json.salary d.salary
end