2016-04-22 31 views
0

我想说明的员工,以及所有类似下面的报告:如何在使用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' 
    } 
] 

回答

1

确保您在相应控制器内有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 
+0

谢谢,但页面正在渲染,所以我知道jbuilder正在执行。 –

+0

我用jbuilder代码片段更新了答案。请尝试一下。 – Sebin

0

得到这个:

{ 
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 
+0

我真的希望这个工作,但事实并非如此。如果我删除阵列!部分并更改顶部部分,以便每个符号都被引用为'@ employee'的属性,然后打印顶层的相应数据。但是,在这两件作品中,我只能获得数组。 –

相关问题