iT邦幫忙

2021 iThome 鐵人賽

DAY 15
0
自我挑戰組

Ruby on Rails 與它們相關的東西 II系列 第 15

Day15 - 匯出(下載) PDF

前言

使用者在操作頁面或輸入網址後,要下載檔案(不局限於 PDF 檔案),可以使用 Ruby on Rails 內建的 send_file 來處理

實作

下載的檔案不局限於 PDF 檔,可參考此 pr

# config/routes.rb

resources :shops do
  collection do
    get :download_pdf
  end
end



---



# app/controllers/shops_controller.rb

def download_pdf
  pdf_path = Rails.root.join('data/river_demo_pdf.pdf')

  send_file pdf_path
end



---



# spec/requests/shops_spec.rb

describe "GET /download_pdf" do
  subject { get download_pdf_shops_path, params: { format: :text } }

  it "send correct file" do
    allow_any_instance_of(ShopsController).to receive(:send_file).with(Rails.root.join('data/river_demo_pdf.pdf'))
    subject
  end
end

實際畫面

小結

一開始不知道時,會想說該如何實作,才能讓使用者可以下載檔案,後來發現 Ruby on Rails 已經幫我們做了許多事情,讓我們在實作上,可以簡單幾行便實現該功能,真的非常快速又方便~

參考資料

  1. apidock#send_file

鐵人賽文章連結:https://ithelp.ithome.com.tw/articles/10271932
medium 文章連結:https://link.medium.com/91hPYYFVPjb
本文同步發布於 小菜的 Blog https://riverye.com/

備註:之後文章修改更新,以個人部落格為主


上一篇
Day14 - PDF 加浮水印
下一篇
Day16 - 匯出 excel-應用篇
系列文
Ruby on Rails 與它們相關的東西 II30

尚未有邦友留言

立即登入留言