2011-01-14 14 views
4

Ich versuche, eine API zu erstellen, und ich muss XML unabhängig vom Format der Anfrage zurückgeben. jetzt habe ich folgendes in meinem Controllerrails 3 render xml unabhängig von request.format

def index 
    @posts = Post.all 
    respond_to do |format| 
     format.xml 
    end 
end 

ich eine index.xml.builder haben

'/posts.xml' funktioniert für mich aber nicht '/ posts'

i Anfrage versucht .format =: xml, was mir einen SystemStackError (Stack-Level zu tief) gab: Warum passiert es?

Wie kann ich den Controller zwingen, xml für alle Arten von Anfrage zu rendern? so dass ich nicht das Format in der URL angeben muss, die sauber und ordentlich aussieht?

Antwort

2
def index 
    @posts = Post.all 
    respond_to do |format| 
    format.any do 
     render :xml => @posts.to_xml 
    end 
    end 
end 
+1

ok .. aber was ist, wenn ich eine benutzerdefinierte XML-Teil sagen index.xml.builder machen möchten? –

+0

down vote \t def index @posts = Beitragsnummer reply_to tun | format | format.any tun render: action => 'index.xml.builder',: layout => falsch Ende Ende Ende – itschn

0

ich so tat, da ich eine benutzerdefinierte XML-Ansicht hatte zu machen:

def index 
    respond_to do |format| 
    format.any do 
     headers["Content-Type"] = "application/xml; charset=utf-8" 
     render "index.xml" 
    end 
    end 
end