前言
使用者在操作頁面或輸入網址後,要下載檔案(不局限於 PDF 檔案),可以使用 Ruby on Rails 內建的 send_file
來處理
實作
下載的檔案不局限於 PDF 檔,可參考此 pr
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38# 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 已經幫我們做了許多事情,讓我們在實作上,可以簡單幾行便實現該功能,真的非常快速又方便~
參考資料
鐵人賽文章連結:https://ithelp.ithome.com.tw/articles/10271932
medium 文章連結:https://link.medium.com/91hPYYFVPjb
本文同步發布於 小菜的 Blog https://riverye.com/
備註:之後文章修改更新,以個人部落格為主