2016-04-22 2 views
0

Je veux montrer un employé, et tous leurs rapports tels que les suivants:Comment afficher les attributs d'un objet lors de l'utilisation de jbuilder?

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

je dois avoir un défaut tel que je reçois tout que sous directs. Voici le code de JBuilder pour l'action show:

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

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

J'ai essayé plusieurs itérations de la première partie du code, mais je vois sans cesse ce qui suit sur un appel de repos, par exemple http://localhost:3000/employees/1.json:

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

Répondre

1

Assurez-vous que vous avez respond_to :json à l'intérieur du contrôleur respectif et que vous avez défini la variable @employee à droite.

Essayez également d'arrêter et de démarrer l'application rails.

Découvrez cette extrait de JBuilder:

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

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

Merci, mais la page est en cours de rendu, donc je sais que le jbuilder est en cours d'exécution. –

+0

J'ai mis à jour la réponse avec un extrait de jbuilder. S'il vous plaît essayez-le. – Sebin

0

pour obtenir ceci:

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

vous avez besoin

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

je me attends vraiment que cela fonctionne, mais il ne fonctionne pas. Si je supprime le tableau! Portion et changer la partie supérieure de sorte que chaque symbole est référencé comme un attribut du '@ employé ', puis il imprime les données appropriées pour le niveau supérieur. Cependant, avec les deux pièces présentes, je reçois seulement le tableau. –