2009-11-03 6 views
0

Bonjour,RoR - Rendu des erreurs imbriquées sur XML

J'essaie de rendre en XML la liste d'erreurs ActiveRecord complète, problème est quand vous faites quelque chose comme:

respond_to do |format| 
    format.xml { render :xml => @object } 
end 

Il ne rend pas attributs imbriqués si vous ne le dites pas, donc soit: vous devez créer un modèle ou appeler la méthode explicite to_xml et utiliser ": include". Cette dernière option semble fonctionner correctement avec les attributs imbriqués sur les associations de modèles. Mais si nous avons des erreurs? Ce code ne fonctionne pas:

respond_to do |format| 
    format.xml { render :xml => @client.to_xml(:include => :errors } 
end 

Je sais que je pouvais faire @ client.errors et même cacher .to_xml, mais maintenant je veux faire quelque chose comme:

respond_to do |format| 
     format.xml { render :xml => @client.to_xml(:include => { 
             :errors, 
             :client_contact => {:include => :errors } })} 
    end 

Et soi-disant que je pourrais obtenir seulement en 1 xml, les erreurs du client, et les erreurs du client.client_contact! Permettez-moi de savoir si je fais quelque chose de mal, ou ceci: include est pas censé travailler avec des erreurs

Cordialement

+0

Y a-t-il une raison particulière pour ne pas utiliser une vue ici? Vous pourriez rendre ces choses séparément, avec des conditions. – kikito

Répondre

1

Jetez un oeil à la documentation XML builder dans l'API docs. Vous pouvez générer du code XML en fonction de n'importe quel nombre de conditions et le générer comme bon vous semble. Il existe également un Railscasts episode qui vous montre comment faire une chose similaire pour les flux RSS.

Questions connexes