작성한 임시 파일의 URL을 가져 오는 데 문제가 있습니다. ajax와 함께 호출되는 컨트롤러의 목적은 dynos가 시작할 때마다 정리 된 임시 dir에서 PDF를 생성 한 다음 JSON을 파일의 URL과 함께 반환하는 것입니다. JSON을 기다리는 자바 스크립트는 window.location.href
을 호출하여 PDF를 다운로드합니다.Ruby, heroku : 임시 파일 (이진 파일)의 URL 가져 오기
내가 생각한 모든 것을 다했으나 작동하지 않습니다. Heroku가 dynos가 시작될 때마다 임시 디렉토리가 정리되어 있다고 들었습니다 (cf creating-temporary-files-in-heroku). 하지만이 게시물은 2 살이며 더 이상 존재하지 않는 RAILS_ROOT
에 대해 이야기하고 있습니다.
def print_a
pdf = render_to_string :pdf => params[:name],
:template => "prints/printA.pdf.html.erb",
:layout => nil
temp_dir = Rails.root.join('app','tmp')
Dir.mkdir(temp_dir) unless Dir.exists?(temp_dir)
@tempfile = Tempfile.new [params[:name], '.pdf'], temp_dir
@tempurl = "#{request.protocol}#{request.host_with_port.sub(/:80$/,"")}/tmp/#{File.basename(@tempfile.path)}"
File.open(@tempfile.path, 'wb') do |file|
file << pdf
end
render "prints/printA.rabl"
end
json으로는 prints/printA.rabl
를 통해 렌더링 : 나는 DIR 좋은 있는지 tempfile
을 사용하고
node(:tempurl) { @tempurl }
node(:tempfile) { @tempfile.path }
그래서 Rails.root.join('app', 'tmp')
를 사용하고 여기에 내 컨트롤러 기능입니다. 그것은 제공 :
http://0.0.0.0:5000/tmp/_20131022-4464-alrmkb.pdf
그리고이 tempurl
을 방문하는 경우, 나는이 오류를 얻을 :
/home/alain/Projects/Heroku/pj/app/tmp/_20131022-4464-alrmkb.pdf
자바 스크립트에 대한 중요한 실제 값이 tempurl
입니다
No route matches [GET] "/tmp/_20131022-4464-alrmkb.pdf"
아무도 도와 드릴 수 있습니까? 그것을 작동 시키세요? 감사.