- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Rails框架九十九例丛书
《Rails框架九十九例丛书 ——框架功能》
致谢:非常感谢王大力、冯侃、Donner So和姜伟等朋友的大力支持
作者:骆古道 / Gudao Luo
博客:http://www.lycom.de
论坛:/group/cnrails (需要注册)
第6章 Rails ActiveMailer系列
第5例 发送动态生成PDF附件的设计思路和实践
真正有用的程序需要相当多的知识有机地结合在一起。但是其中每一项知识都是非常的简单。这一节是本
章最重要的内容,也是最复杂的项目。
问题问题
信息是动态的。我们不可能总是发送已有以PDF文件或者其它文件形式的内容。如何发送来自于数据库信
息的附件,而该内容是以PDF文件形式的。
对于自己所生成的PDF文件,如何作为电子邮件附件发送,是本节所解决的问题。如何生成PDF文件内容不
是这里的重点。我们的重点是在有了这样的文件 内容以后,如何把PDF文件内容传递到应用邮件模型作为
附件发送出去。PDF文件内容是从数据库产生的,并且是以内存形式存储的。
前提条件前提条件
这一节所需要准备的内容基本上是前面几节的内容。唯一新的代码是如何使用函数render_to_string() 。
解决方案解决方案
• 创建创建Rails软件软件
这里的工作与第一节的内容是完全相同的,只是项目的名称为x05不同而已。
• 创建和配置收发邮件配置文件创建和配置收发邮件配置文件
这一部分代码和说明请参见前面几节内容。
• 创建应用邮件模型创建应用邮件模型
创建应用邮件模型使用如命 6.3所示。这一节的应用邮件模型代码与上一节相比更简单了,如代码 6.15所
示。只有其中的第十行代码修改了,直接获取参数的字符串流。
代码代码 6.15 应用邮件模型文件应用邮件模型文件app/models/mail_man.rb代码代码
1 class MailMan ActionMailer ::Base
2 def mail recipient,string_stream
3 recipients recipient
4 from info@alps-germany.de
5 subject Hi #{recipient}
6 body body #{recipient}
7
8 attachment application/pdf do |a|
9 a.filename = File.basename(#{Time.now.to_s}.pdf)
10 a.body = string_stream
11 end
12 end
13 end
• 使用应用邮件模型代码使用应用邮件模型代码
这一节的项目重头戏是如何产生字符串流。这一次把使用应用邮件模型代码存放在控制器文件app/
controllers/contacts_controller.rb的函数show()中,如代码 6.16所 示。其中的代码第6行和第7行是一行代码,
只是因为一行太长,所以分成两行来写。这行代码使用了函数render_to_string() ,以获取PDF 文件的字符
流。在第5行到第10行的块代码,是客户端调用函数show()时,返回HTML网页信息。而该代码块中间的代
码,是在返回HTML网页信息过 程中执行的代码,其作用就是获取PDF文件的字符流并且调用应用邮件模
型函数,即发送带有PDF文件的电子邮件。
代码代码 6.16 编辑编辑Contact控制器文件控制器文件app/controllers/contacts_controller.rb
1 def show
2 @contact = Contact.find(params[:id])
3
4 respond_to do |format|
5 format.html do # show.html.erb
6 string_stream = render_to_string :layout = false,
7 :template = #{@contact.class.table_name}/pdfs/show
8 puts string_stream class is #{string_stream.class}
9
您可能关注的文档
最近下载
- 【课件】有理数的乘法法则+课时1+课件2025--2026学年人教版七年级数学上册.pptx VIP
- 县域慢病管理中心建设项目.pptx VIP
- 统编版小学语文六年级上册精品作文教学课件 第一单元 习作:变形记.ppt VIP
- 县域慢病管理中心建设.pptx VIP
- 慢病管理中心建设方案.pptx VIP
- 2025年法考客观题真题回忆版(含答案).docx VIP
- 2025年中职思想政治统编教材培训考试试题及答案.docx
- 仿生物电刺激基础知识-常用治疗方案-仿生物电刺激技术在女性不孕症的临床应用.pptx
- 某砖厂泡沫混凝土砌块项目可行性研究报告.doc VIP
- 法考客观题真题考点汇总.pdf VIP
文档评论(0)