Lorsque vous utilisez JBuilder, comment puis-je supprimer complètement la preuve d'un élément de tableau vide de ma sortie? Pour cet exemple de code, supposons que nous avons trois utilisateurs et le troisième utilisateur dispose d'une adresse nil
:Comment faire pour supprimer complètement un élément vide d'un tableau avec JBuilder
json.array! @users.each do |user|
unless user.address.nil?
json.name user.name
json.address user.address
end
end
Le résultat JSON est:
[
{
"name":"Rob",
"address":"123 Anywhere St."
},
{
"name":"Jack",
"address":"123 Anywhere St."
},
{}
]
Voir cette dernière, vide {}
à la fin là. Donc, chaque fois que le bloc est passé à array!
renvoie nil
Je me retrouve avec un élément vide dans le tableau, plutôt que d'un manque d'élément. Existe-t-il un moyen facile de dire à JBuilder de ne pas les afficher? Ou dois-je simplement traiter la sortie de array!
comme un simple ol 'array puis compact
ou reject
éléments que je ne veux pas? il retournera
json.array! @users.reject { |user| user.address.nil? }.each do |user|
json.name user.name
json.address user.address
end
Oui, je peux totalement faire cela, et c'est ainsi que je gère le problème en ce moment. Et bien sûr, je ne devrais pas avoir cette logique dans la vue de toute façon. ;) Mais je me demandais juste si/quand cette situation se présente s'il y avait un moyen pour 'array! 'De gérer ce cas pour moi ... –