Railsサーバーからajax経由でファイルをダウンロードする際に問題があります:
ダウンロード コントローラーに show アクションがありsend_file
、パラメーターが show アクションに渡された場合に呼び出されます。
select
次に、サーバー上にあるファイルのリストを表示するドロップダウンがあるページがあります。値を選択してダウンロード ボタンをクリックすると、ダウンロード コントローラーによって処理される GET 要求を送信する ajax 要求が発行されます。
サーバーログを見ると、ajax リクエストが機能しているようで、次のように表示されます。
Started GET "/download?file=test.txt" for 127.0.0.1 at 2012-07-19 15:13:41 -0700
Processing by DownloadsController#show as HTML
Parameters: {"file"=>"test.txt"}
Sent file /Users/Admin/Documents/rails_projects/test/public/data/test.txt (0.1ms)
Completed 200 OK in 0ms (ActiveRecord: 0.0ms)
ただし、実際には何もダウンロードされません。実際に手動でページにアクセスすると、show
実際にファイルがダウンロードされます。私は何を間違っていますか?
--
Javascript
<script type="text/javascript">
$(function() {
$('#button').click(function() {
var s = $("select#dropdown_select").val();
$.ajax({
type: 'GET',
url: 'http://localhost:3000/download?file=' + s,
dataType: "HTML"
});
})
});
</script>
ダウンロードコントローラー
def show
filename = params[:dl]
if(filename.nil? == false)
path = Rails.root.join('public/data', filename)
send_file path, :x_sendfile => true
end
end