2015-08-06 2 views
1

Lors de la création d'une réponse JSON avec jbuilder, je souhaite ajouter un attribut "image_full_url" à chacun de mes objets Employee.L'ajout d'attribut à l'objet dans jbuilder ne fonctionne pas

Dans mon fichier JBuilder cela ressemble suit:

json.branch_companies @companies.select{ |branch| branch.head_company_id == head_company.id}.map{|branch| { 
    :branch => branch, 
    :employees => branch.employees.select(employee_attributes).each{ |emp| emp.image_full_url = "#{root_url[0..-2]}#{emp.photo_image.url}" }, 
    :machine_categories => branch.machine_categories.pluck(:id, :name, :description) 
    } 
} 

Dans mon Emplyoee modèle I ont un attr_accessor correspondant:

attr_accessor :image_full_url 

Ajout d'un attribut à un objet Employee fonctionne parfaitement sur la console.

La partie I ayant des problèmes est ici:

:employees => branch.employees.select(employee_attributes).each{ |emp| emp.image_full_url = "#{root_url[0..-2]}#{emp.photo_image.url}" } 

j'attendre à ce que l'attribut "image_full_url" a été ajouté à l'objet emp, mais il isnn't. La réponse JSON ne contient pas le champ "image_full_path". Qu'est-ce que je fais mal? Quelqu'un peut-il aider ici?

+0

Quelle sortie JSON obtenez-vous? – EugZol

+0

'employés: [5] 0: { id: 3 nom: "Vanessa" nom: "Woißett" phone_mobile: "+49 1721111111" phone_landline: "+49 711111113" Fax: « +49 711111112 " email: "[email protected]" département: "Disposition" company_id: 1 actif: true} - 1: { id: 1 nom: "Anton" nom: "Massner" phone_mobile : "+49 175655555" telephone_landline: "+49 7116555551" fax: "+49 711655555552" email: "[email protected]" département: "Geschäftsführung" company_id: 1 actif: true} ' –

Répondre

0

Bien sûr, vous n'obtiendrez pas l'attribut: image_full_url dans votre sortie json, car le sérialiseur n'en sait rien. Vous pouvez simplement vérifier en faisant suivant:

Emplyoee.limit(2).each{|e| e.image_full_url = "asdw"}.as_json 

En conséquence, la sortie ne contiendra pas: attribut image_full_url. Si vous voulez que cet attribut figure dans votre résultat final, ajoutez à la ligne suivante:

.as_json(:methods => [:image_full_url]) 
+0

Yay, tout fonctionne. Merci pour la clarification. –