2012-09-26 5 views
13

Kann mir jemand mit XML-Template-Rendering und send_data helfen?Wie XML Vorlage zu rendern und dann SEND_DATA in Ruby on Rails 3.2.8 zu verwenden?

Ich habe einen Controller:

def show 
    @calculation = Calculation.find(params[:id]) 

    respond_to do |format| 
    format.html # show.html.erb 
    format.json { render json: @calculation } 
    format.xml {send_data(:partial=>show.xml.erb, :filename => "my_file.xml") } 
    format.pdf { render :format=>false} 
    end 
end 

Aber ich habe viele Fehler mit "Stack-Ebene zu tief"

Wenn ich

{send_data(@calculation, :filename => "my_file.xml") } 

verwende ich XML-Datei, aber nicht aus Meine Vorlage ...

EDIT: Ich habe einen Weg!

format.xml do 
    stream = render_to_string(:template=>"calculations/show") 
    send_data(stream, :type=>"text/xml",:filename => "test.xml") 
end 

Und alles funktioniert einwandfrei!

+0

Können Sie Ihre gesamte Spur hinterlassen? – sunnyrjuneja

+0

SystemStackError in CalculationsController # zeigen Stack-Ebene zu tief Rails.root: C: /RubyStack-3.2.5-0/examplexml Anwendung Trace | Rahmenverfolgung | Voll Trace Actionpack (3.2.5) lib/action_dispatch/Middleware/reloader.rb: format.xml: 70 – Dmitry

+1

ich ein Ergebnis in meinem Chrome mit haben kann {Render: format => false} Aber nur Bildschirm, nicht Datei zum Download – Dmitry

Antwort

17

Kopieren der Antwort des editierten Frage Körper, um diese Frage aus dem „Unbeantwortet“ Filter zu entfernen:

format.xml do 
    stream = render_to_string(:template=>"calculations/show") 
    send_data(stream, :type=>"text/xml",:filename => "test.xml") 
end 

~ Antwort pro Dmitry

Verwandte Themen