2016-04-22 63 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'的屬性,然後打印頂層的相應數據。但是,在這兩件作品中,我只能獲得數組。 –

相關問題