14

任何人都可以帮助我处理 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

但是我有很多“堆栈级别太深”的错误

如果我使用

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

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

编辑: 我有办法!

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

一切正常!

4

2 回答 2

20

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

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

〜回答每个德米特里

于 2013-10-09T06:04:50.980 回答
0

你可以用 Rails 5 试试这个

respond_to do |format|
  format.html do
    stream = render_to_string(:template => "calculations/test.xml.builder")
    send_data stream,
              :type => 'text/xml; charset=UTF-8;',
              :disposition => "attachment; filename=test.xml"
  end
end
于 2019-02-19T14:26:37.343 回答