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

Rails5でこれを試すことができます

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 に答える