2012-10-26 5 views
3

최근에 AJAX 요청으로하는 경우를 제외하고는 루비 온 레일에서 단일 HTTP 요청으로 둘 이상의 파일을 다운로드 할 수 없다는 것을 알게되었습니다. 나는 지금 그것을하는 방법을 이해하려고 애 쓰고있다.AJAX 요청으로 파일 데이터 다운로드 - ruby ​​on 레일스 3

나는 PDF 렌더링 내 컨트롤러에서 작업을 한 후

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

내 HTML보기에서 버튼이 SEND_DATA 사용 (I 3 레일에 루비와 PDF 크리에이터로 새우를 사용하고 있습니다) 그

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

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

몇 초 PDF 렌더링 걸린 후 나는 "#mydownload"을 클릭

, 나는 내부 데이터, 내 생각, 모든 PDF 파일로 성공적으로 alertbox를받을이 작업 JScript 코드가 있습니다.

질문 : 어떻게하면 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

글쎄, 내가 확인합니다! 어쨌든 나는 항상 오류없이 지금까지 다운로드를 사용 ...하지만 어떻게 자바 스크립트 측면을 바꿀 수 있습니까? –

+0

당신이 뭘 하려는지는 잘 모르겠지만 그 다운로드는 유효한 콘텐츠 처리가 아니라는 것을 지적하고 싶었습니다. 인라인 또는 첨부 파일이어야합니다. 두 가지 방법 모두 다르게 작동하는지 확인할 수 있습니다. 인라인은 파일을 다운로드하고 즉시 브라우저에 표시하려고합니다. 첨부 파일을 저장하거나 열 것인지 묻는 메시지가 나타납니다. 당신이 AJAX 콜을하고 있기 때문에 어떻게 작용할 지 확신하지 못합니다. –

+1

@RiccardoNeri이 비슷한 질문을 참조하십시오 : [http://stackoverflow.com/questions/1999607/download-and-open-pdf-file-using-ajax](http://stackoverflow.com/questions/1999607/download- and-open-pdf-file-using-ajax) –