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/

备注:之後文章修改更新,以个人部落格为主


<<:  从 JavaScript 角度学 Python(27) - 传值?传参考?

>>:  Python - 在 Windows 10 上使用 PySpark 连接 Mysql 资料库参考笔记

第48天~

这个得上一篇:https://ithelp.ithome.com.tw/articles/10258...

从零开始学游戏设计:游戏音效

这是 Roblox 从零开始系列,游戏环境章节的第五个单元,今天要来教你如何在游戏中的角色作出动作之...

Day 26:「按钮博物馆」- 轻松变化各种按钮元件

哈罗大家好~ 不知道昨天的进度条做的怎麽样? 想要交作业的人可以贴在昨天的留言区给我呦! 那我们今...

(ISC)² 道德规范(Code of Ethics Canons)

-道德在新的 CISSP 考试大纲中名列前茅 道德规范(Code of Ethics Canons...