如何呈现XML模板,然后在Ruby on Rails 3.2.8中使用SEND_DATA?

Dmi*_*try 14 ruby ruby-on-rails send

任何人都可以帮我处理XML模板渲染和send_data吗?

我有一个控制器:

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
Run Code Online (Sandbox Code Playgroud)

但是我有很多错误,"堆栈级别太深"

如果我使用

{send_data( @calculation, :filename => "my_file.xml" ) }
Run Code Online (Sandbox Code Playgroud)

我得到XML文件,但不是我的模板...

编辑: 我有办法!

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

一切正常!

Dre*_*awn 19

从已编辑的问题正文中复制答案,以便从"未答复"过滤器中删除此问题:

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

〜每个德米特里回答