2012-09-26 23 views
13

Ai đó có thể giúp tôi với việc tạo mẫu XML và gửi_data không?Làm thế nào để kết xuất khuôn mẫu XML và sau đó sử dụng SEND_DATA trong Ruby on Rails 3.2.8?

Tôi có một bộ điều khiển:

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 

Nhưng tôi có nhiều lỗi với "chồng mức quá sâu"

Nếu tôi sử dụng

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

tôi nhận được tập tin XML, nhưng không phải từ mẫu của tôi ...

EDIT: Tôi đã có một cách!

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

Và tất cả đều hoạt động bình thường!

+0

Bạn có thể đăng toàn bộ dấu vết của bạn? – sunnyrjuneja

+0

SystemStackError trong tính toánController # show mức ngăn xếp quá sâu Rails.root: C: /RubyStack-3.2.5-0/examplexml Trace ứng dụng | Khung Trace | Toàn bộ dấu vết actionpack (3.2.5) lib/action_dispatch/middleware/reloader.rb: 70 – Dmitry

+1

Tôi có thể có kết quả trong Chrome của mình với: format.xml {render: format => false} Nhưng chỉ màn hình, không phải để tải xuống – Dmitry

Trả lời

17

Sao chép câu trả lời từ cơ thể câu hỏi đã được chỉnh sửa để loại bỏ câu hỏi này khỏi bộ lọc "Chưa trả lời":

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

~ câu trả lời cho mỗi Dmitry