Considérons le modèle show.json.jbuilder
suivant:Y compris un autre modèle de JBuilder dans un autre
json.user do |json|
json.extract! @user, :id, :username, :email, :created_at, :avatar
end
json.policies do |json|
json.array!(@policies) do |policy|
json.extract! policy, :id, :title, :cached_votes_score
end
end
json.liked do |json|
json.array!(@liked) do |policy|
json.extract! policy, :id, :title, :cached_votes_score
end
end
json.disliked do |json|
json.array!(@disliked) do |policy|
json.extract! policy, :id, :title, :cached_votes_score
end
end
Serait-il possible de diviser ceux en quatre modèles différents, et inclure juste les dans le modèle show
? Quelque chose comme:
include template_user
include template_policies
include template_liked
include template_disliked
Si cela est impossible, quelles alternatives existent pour la création d'un code de JBuilder plus modulaire? Je trouve mon code jbuilder très peu DRY.
Cela tombe bien, et merci pour la note sur les variables locales! Une question de suivi: est-il possible d'inclure un partiel qui n'a pas de nom commençant par un trait de soulignement? – maxedison
Non. Les partiels ont un trait de soulignement comme premier caractère, sinon ce sont des vues. – coorasse
Oui, j'espérais pouvoir utiliser une vue comme vue dans certains cas, ou comme partielle dans d'autres. Je me rends compte que je peux le faire en appelant simplement «render template: ...» dans ma méthode de contrôleur sur le partiel, mais j'espérais pouvoir éviter cela. – maxedison