Rails框架九十九例丛书.pdfVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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

文档评论(0)

jiupshaieuk12 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:6212135231000003

1亿VIP精品文档

相关文档