2012-10-26 53 views
3

我最近得知,我不能下载超过1个文件,只有一个HTTP请求在rails上运行,除非我使用AJAX请求。我现在试图找出如何做到这一点。使用AJAX请求下载文件数据 - Ruby on Rails 3

(我用虾为PDF的创造者与Ruby on Rails的3) 我有我的控制器渲染PDF的动作,并使用SEND_DATA

def download_quote   
pdf = QuotesPdf.new(params) 
send_data pdf.render, filename: "foo.pdf", 
        type: "application/pdf", 
        disposition: "download" 
end 

然后我在HTML视图中有一个按钮具有此工作JScript代码

// AJAX, download 
function ajaxRequest(){ 
    $.ajax({ 
     type: 'POST', 
     url: '/download_quote/126', 
     success: function(data){ 
     alert(data); 
     } 
    }); 
    return false; 
    } 

    $("#mydownload").click(ajaxRequest); 

当我点击“#mydownload”后几秒钟了渲染PDF,我收到内部的数据,我想,所有的PDF文件成功alertbox。

问题是:如何转换PDF文件中的数据并自动下载它?

回答

1

我不认为“下载”是一种有效的内容处置类型。尝试使用“附件”。

Content Disposition

def download_quote   
    pdf = QuotesPdf.new(params) 
    send_data pdf.render, filename: "foo.pdf", 
     type: "application/pdf", 
     disposition: "attachment" 
end 
+0

好吧,我会检查!无论如何,我总是使用下载没有错误到目前为止......但如何这可以改变JavaScript方? –

+0

我不太确定你在做什么,但我想指出,下载不是一个有效的内容处置。它应该是内联或附件。你可以尝试这两种方法,看看它的行为是否有所不同。内联将下载文件并立即尝试在浏览器中显示。附件会提示用户保存或打开。由于您正在进行AJAX呼叫,我不确定这些呼叫是如何起作用的。 –

+1

@RiccardoNeri看到这个类似的问题:[http://stackoverflow.com/questions/1999607/download-and-open-pdf-file-using-ajax](http://stackoverflow.com/questions/1999607/download-和开放的PDF文件使用的Ajax) –