から空のファイルを作成するSEND_DATA。しかし、どのような方法で試しても、ファイルは空白になります。Railsは、私は、文字列で満たされたファイルをダウンロードしようとしているコントローラ
def export(notes)
stream = render_to_string(:template=>"cards/export.enex.erb", :locals => {:notes => notes}, :formats => [:enex])
send_data(stream.to_s, :filename => "notes.enex")
end
私は問題を追跡しようとするRails.logger.infoを使用していると、ストリームが空でないことを確認していると(に促さ)私のログショー:ここ
は、関連するコードですファイルが正しいデータで完全に送信されたことを確認します。私はカスタムMIMEタイプ(enex)を使用していますが、それはすべて正しく設定されています。私はいくつかの異なる方法を試してきましたが、何も動作しませんここでいくつかの他の試みている:各場合において、(1)
@notes = notes
render file: "cards/export", formats: [:enex], type: 'text/plain', disposition: 'attatchment; filename=cards.enex'
(2)
render template: "cards/export", formats: [:enex], :locals => {:notes => notes}, type: 'text/plain', disposition: "attatchment", filename: "notes.enex"
(3)
send_file 'app/views/cards/export.enex.erb', type: 'application/enex', disposition: "attachment; filename=notecards.enex", :x_sendfile=>true
、ファイルは空白を終了します。
あなたが見ることができるように、私が使用していた文字列は、ERBのフォームに必要事項を記入して作成されます。重要な場合は、「注釈」はフォームに記入するために使用するハッシュです。私は、コントローラのビューとrespond_toのボタンを使ってこれを動作させる方法を知っていますが、意図的にデータベースを使用しておらず、示されているようにプライベートコントローラメソッドを使用して問題を解決することを好みます。
私はRailsのあなたがSEND_DATAが失敗する原因となるものを見ることができます4
を使用していますか?
回答ありがとうございます。私は試してみたが、それはファイルをダウンロードするが、まだ空です。 – JGP
興味深いことに...サーバーのファイルシステムの 'my_file.enex'ファイルにコンテンツがありますか? – jlesse
あなたの問題を修正しました。ありがとう! – JGP