[ruby-on-rails] 레일에 파일 다운로드 링크


1 Answers

레일즈 4 :

경로 :

get "home/download_pdf"

컨트롤러 (이미 pdf 있음) :

def download_pdf
  send_file(
    "#{Rails.root}/public/your_file.pdf",
    filename: "your_custom_file_name.pdf",
    type: "application/pdf"
  )
end

컨트롤러에서 (pdf 생성 필요) :

require "prawn"
class ClientsController < ApplicationController

  def download_pdf
    client = Client.find(params[:id])
    send_data generate_pdf(client),
              filename: "#{client.name}.pdf",
              type: "application/pdf"
  end

  private

  def generate_pdf(client)
    Prawn::Document.new do
      text client.name, align: :center
      text "Address: #{client.address}"
      text "Email: #{client.email}"
    end.render
  end
end

보기 :

<%= link_to 'Download PDF', home_download_pdf_url %>
Question

방문자들에게 몇 가지 PDF를 다운로드 할 수있는 옵션을 제공하고 싶습니다. 나는 시도했다 :

<%= link_to "abc", "/data/abc.pdf"%>

<%= link_to "abc", "/data/abc.pdf", :format => 'pdf' %>

일부 유사하지만 작동하지 않는 것 같습니다. 계속 No route matches [GET] "/data/abc.pdf" 를 찾을 수 No route matches [GET] "/data/abc.pdf"

자산 폴더에있는 data라는 폴더에 pdf 파일이 있습니다. 어떤 도움을 주시면 감사하겠습니다.




다음과 같이 컨트롤러 동작을 호출하면됩니다.

<%= link_to "Download", download_file_path, class: "btn btn-sm btn-default", target: "_blank" %>

그리고 당신의 컨트롤러에서

def download_file
 redirect_to paperclip_attachment.file.url
end


Related