2012-08-31 1 views
2

다운로드 할 수있는 브로셔 링크가 포함 된 전자 메일을 보내고 있습니다. 사용자가 다운로드를 시작하고 그들이 빈 화면에 남아있는 이메일의 링크를 클릭하면Ruby on Rails : send_file을 사용하여 파일을 다운로드하고 뷰를 표시하는 방법

여기 내 다운로드 액션

def download 
    @thing = Thing.find_using_slug(params[:id]) 

    send_file @thing.brochure.path, 
     :type => 'application/pdf', 
     :filename => "#{@thing.name}_brochure.pdf" 
end 

입니다. 방문 페이지를 렌더링하고 파일을 보내고 싶습니다.

답변

0

이메일 링크가 ?dl 쿼리 문자열이 첨부 된 방문 페이지 동작을 가리키는 것이 더 좋을 수도 있습니다.

방문 페이지 동작은 조건부로 params.include?(:dl)을 확인하고 HTML과 같은 방문 페이지 HTML의 <head>에 다음과 같은 자바 스크립트를 추가 할 수 있습니다.

window.onload = function() { 
    setTimeout(function() { 
    window.location = 'URL TO DOWNLOAD ACTION HERE'; 
    }, 2000); 
} 

사용자가 비활성화 자바 스크립트가 있거나 원치 않는 경우합니다 (?dl 쿼리 문자열의 존재 조건으로 다시) 또한 방문 페이지 에 링크 을 제공하는 것이 좋습니다 것 리디렉션을 기다리는 데 2 ​​초가 걸립니다.