2010-02-22 3 views
3

Je suis vraiment confus sur la façon d'utiliser des modèles de constructeur en ruby ​​sur rails. J'ai un certain code de contrôleur simple:Comment afficher un modèle .builder dans ruby ​​on rails?

class ProductsController < ApplicationController 

    def index 
    @products = Product.all 
    respond_to do |format| 
     format.html # index.html.erb 
     format.xml # index.builder 
    end 
    end 

end 

mais cela ne semble pas fonctionner. Mon fichier index.builder ressemble à ceci:

xm = Builder::XmlMarkup.new(:target=>$stdout, :indent=>2) 
xm.instruct!   
    xm.index{ 
    @index.each do |i| 
     xm.country(i.country.name) 
     xm.value(i.value) 
     xm.year(i.year) 
    end 
    } 

mais je reçois toujours une réponse vide. On dirait que je ne comprends pas quelque chose de fondamental ici.

Répondre

8

Renommer index.builder à index.xml.builder puis l'objet XML est déjà disponible dans index.builder, de sorte que vous pouvez modifier votre fichier constructeur pour ressembler à ceci:

xml.instruct! 
xml.posts do 
    @products.each do |product| 
    xml.product do 
     xml.title product.title 
     xml.body product.body 
     xml.price product.price 
    end 
    end 
end 

Plus ici: http://danengle.us/2009/05/generating-custom-xml-for-your-rails-app/