2011-02-09 12 views
2

フォームタグにCSVファイルを生成するボタンがあり、ユーザーがクリックするとダウンロードが促されます。Windows IEでクリックしたときにファイルをダウンロードする方法

IEでこれを達成しようとすると、IEはIEでファイルを開こうとします。ファイルをダウンロードするだけです。

マイHTML:

<FORM accept-charset="UTF-8" method="post" action="/generate_csv?calc[]total_interest=189.08"> 
    <DIV style="margin: 0px; padding: 0px; display: inline;"><INPUT name="utf8" value="✓" type="hidden"> 
    <INPUT name="authenticity_token" value="4o1dEDoFbbDoc3scpnhDaQpPtpFM5NitTOrYQA0AU5k=" type="hidden"> 
    </DIV> 
    <INPUT id="print_csv" name="commit" value="Print CSV" type="submit"> 
</FORM> 

マイRailsのコントローラ:

headers['Content-Disposition'] = "attachment;" 
send_data(csv_string, 
    :type => 'text/csv; charset=utf-8; header=present; disposition=attachment', 
    :filename => @filename, 
    :disposition => 'attachment') 

任意のアイデアをどのようにこれを実現するには?

答えて

1

私は次のことをしようとするだろう。あなたのコントローラでは、CSVファイルを生成するときにsend_dataまたはsend_fileを使用して送信している可能性があります。あれは正しいですか?そのような場合は、単にファイルまたはデータを送信するのではなく、「添付ファイル」として処理を設定する必要があります。例:あなたが行うことができます

send_data @csv, :type => 'text/csv', :disposition => 'attachment', :filename => 'generate_csv.csv' 

または

send_file '/path/to.csv', :type => 'text/csv', :disposition => 'attachment' 

もう一つは、フォーマットが含まれるように、あなたのルートを変更しています。あなたはあなたのポストの要求は、このようなGETリクエストに変換することができます

match 'generate_csv.csv' => 'csv#generate_csv' 

:たとえば

<%= link_to "Print CSV", '/generate_csv?calc[]total_interest=189.08' %> 
+0

ああ偉大な点、私はfaster_csv持つもの 'send_data'を使用しています、そしてあなたが言及したように私が追加しました処分添付変数、しかしそれは役に立たないようです。 – Trip

+0

送信ボタンから送信されている可能性がありますか? – Trip

+0

それは可能性があります。あなたはそれを単純なlink_toまたはGETリクエストにしようとしましたか? 「:添付ファイルのContent-disposition」ヘッダーは、アプリケーションから戻ってくる、私はどうなる –

0

ブラウザにファイルをダウンロードするように指示するには、アプリケーションからContent-Disposition: attachmentヘッダーを送信してください。

関連する問題