2009-08-22 7 views
1

Je cherche à répondre à XML. Dans mon action d'affichage, j'ai quelque chose comme ceci:Rails: Répondre à XML

respond_to do |format| 
    format.html { 
    render :action => 'show' 
    } 
    format.xml { 
    render :xml => @post.to_xml 
    } 
end 

Cela affichera tous les attributs de la publication. Comment voulez-vous sortir seulement quelques-uns des attributs de la publication? Aussi, dites que Post appartient à l'utilisateur. Comment pourriez-vous aller plus loin en publiant le nom de l'utilisateur avec le XML de la publication (plutôt que la clé étrangère donnée à la publication)?

Répondre

4
@post.to_xml(:except => [:foo, :bar], :include => :user) 

Les docs sur to_xml aller plus en détail

+0

Cela fonctionne bien. Cependant, si j'utilise quelque chose comme @ post.to_xml (: only => [: created_at,: updated_at],: include =>: user), les colonnes created_at et updated_at sont affichées à la fois pour l'article et l'utilisateur. Est-il possible de spécifier uniquement les colonnes: created_at et: updated_at pour le post - par ex. 'post.created_at'? Merci de votre aide! – Homar

+1

La documentation décrit comment accéder à l'objet xml Builder pour des utilisations avancées. L'option: include peut également prendre un hachage qui spécifie les options qui iront aux éléments inclus par ex. : include => {: user => {: seulement =>: foo}} –

1

Transforme que vous pouvez passer: seulement et: à l'exception des options au: comprennent:

@post.to_xml(:only => [:created_at, :updated_at], :include => {:user => {:only => :name}}) 

Cela se created_at et updated_at colonnes pour le message et le nom de l'utilisateur associé.

Questions connexes