`
wuhuizhong
  • 浏览: 684530 次
  • 性别: Icon_minigender_1
  • 来自: 中山
社区版块
存档分类
最新评论

rails 3 中 生成pdf 2: email pdf 附件

    博客分类:
  • ROR
 
阅读更多

ActionMailer in Rails 3

http://cn.asciicasts.com/episodes/206-actionmailer-in-rails3

 

在邮件中发送pdf附件,WickedPdf来做pdf生成,ActionMailer支持发送附件,只需使用attachments设置好pdf即可:

attachments["invoice.pdf"] = WickedPdf.new.pdf_from_string('<h1>Hello There!</h1>')

 

重点是要用render_to_string 来输出格式化好的pdf,但ActionMailer的render_to_string跟controller中的行为不是完全一致的,需要一点hack,完整实现如下:

class InvoiceMailer < ActionMailer::Base
  default :from => ApplicationSettings.email.sender_email
 
  def email_invoice(invoice)
    @invoice = invoice # set var for views
    attachments["#{invoice.file_name}.pdf"] = generate_pdf(invoice)
    mail(:to => invoice.bill_to_email, :subject => "#{invoice.company_name} Invoice")
  end
 
  protected

    # http://stackoverflow.com/questions/5421615/rails-3-actionmailer-and-wicked-pdf
    def generate_pdf(invoice)
      _controller_path = controller_path # backup the controller_path
      controller_path('invoices') # set controller_path PartialRenderer#find_template
      pdf = render_to_string(:layout => "pdf.html.haml", :template => "invoices/show.pdf.haml")
      controller_path(_controller_path) # reset the controller_path for current mailer
      # http://chopmode.wordpress.com/2011/03/25/render_to_string-causes-subsequent-mail-rendering-to-fail/
      self.instance_variable_set(:@lookup_context, nil) # enable mail() method could render the collect views
      pdf = WickedPdf.new.pdf_from_string(pdf)
    end

end
分享到:
评论

相关推荐

    Rails的精简版本Rails::API.zip

    Rails::API 可以用来创建只提供API服务(API-Only)的 Rails 应用,不需要整个Rails 栈和模板生成。也可以用来编写在 Web 应用和客户端之间进行数据共享的后端程序,允许开发者创建接受 JSON 格式数据并以传统 RoR ...

    Ruby On Rails中文教材(PDF)

    2. **Rails框架结构**:学习者需要了解MVC架构,包括模型(Model)、视图(View)和控制器(Controller)各自的作用。模型处理数据逻辑,视图负责展示用户界面,而控制器作为两者之间的桥梁,协调数据传输。 3. **...

    ruby on rails 3 tutorial.pdf

    《Ruby on Rails 3 Tutorial》是一本专门为初学者设计的指南,旨在帮助读者快速掌握Ruby on Rails这一强大的Web开发框架。Ruby on Rails(简称Rails)是基于Ruby语言的一个开源框架,它采用MVC(Model-View-...

    Rails中应用Ext.tree:以中国的省市地区三级联动选择为例

    在Ruby on Rails(Rails)框架中,开发人员经常需要实现各种用户交互功能,例如三级联动选择,这在处理如中国省市区这样的地理数据时尤其常见。这篇博客文章“Rails中应用Ext.tree:以中国的省市地区三级联动选择为...

    java基础之rails命令大全.pdf

    - `-d, --database=DATABASE`: 指定使用的数据库类型(如 MySQL、Oracle、PostgreSQL、SQLite2 或 SQLite3)。如果不指定,默认使用 SQLite3。 - `-r, --ruby-path=PATH`: 指定 Ruby 解释器的路径。如果未指定,则...

    Rails之道.pdf 高清 带书签

    Rails之道.pdf 高清 带书签

    Ruby-GoOnRails使用Rails生成器来生成一个Golang应用

    `GoOnRails`是专门为Rails开发者设计的一个生成器,它允许在Rails应用中集成Go代码,创建Go API服务。这个工具简化了在Rails项目中使用Go进行后端处理的流程,使开发者可以利用Go的性能优势处理高并发请求,同时保留...

    Web开发:Ruby on Rails.pdf

    Web开发:Ruby on Rails.pdf

    RestFul_Rails_Dev_pdf_v_0.1.zip

    本资料“RestFul_Rails_Dev_pdf_v_0.1.zip”包含了《RESTful Rails Development》的翻译版,将深入探讨如何在Rails中实现RESTful的设计模式。 首先,RESTful设计的核心概念是资源(Resources)。在Rails中,资源...

    Rails 4 in Action, Second Edition.pdf

    - **Active Record Query Interface**:Rails 4在Active Record中引入了一个新的查询接口,使数据库操作更加直观和高效。 - **Secure Cookies**:为了提高安全性,Rails 4引入了一种新的安全cookie机制,可以更好地...

    rails_email_preview, 在 Rails 中,预览和编辑应用程序邮件程序模板.zip

    rails_email_preview, 在 Rails 中,预览和编辑应用程序邮件程序模板 Rails 电子邮件预览 使用这里 Rails 引擎在浏览器中预览电子邮件。 兼容 Rails 4.2 。电子邮件审阅: 所有电子邮件预览的列表: 代表有两个主题...

    Rails Recipes Final.pdf

    ### Rails Recipes Final.pdf 知识点解析 #### 标题:Rails Recipes Final.pdf - **核心概念**:本书名为《Rails Recipes》,旨在提供一系列针对Ruby on Rails开发过程中的实用技巧和解决方案。 #### 描述:...

    wicked_pdf:Ruby on Rails的PDF生成器(来自HTML)插件

    Ruby on Rails的PDF生成插件 Wicked PDF使用shell实用程序从HTML向用户提供PDF文件。 换句话说,您无需像通常那样处理PDF生成的DSL,而是只需像通常那样编写HTML视图,然后让Wicked PDF处理繁琐的工作。 Wicked PDF...

    Ruby+on+Rails快速Web应用开发实战.pdf

    - **数据库配置**:在Rails中,数据库的配置通常涉及模型的生成,以及在配置文件中设置数据库连接参数。 ### MVC架构模式 - **MVC架构**:文档中提到的MVC是Rails的核心架构模式,它将应用程序分为三个主要的组件...

    graphql-rails-generators:Graphql Rails Scaffold:trade_mark:。 从Rails模型自动生成GraphQL类型

    一些生成器可以轻松将Rails模型与集成。 我之所以创建它,是因为我浪费了太多的按键来手动复制模型架构以创建graphql类型。 该项目包含用于查看ActiveRecord模型架构的生成器,并为您生成graphql类型。 gql:model...

    ruby on rails 敏捷开发,3.1 pdf and epub format

    在Rails 3.1版本中,引入了许多重要更新和改进,使得这个框架更加高效且功能丰富。 首先,让我们深入了解Rails 3.1在资产管道(Asset Pipeline)方面的重要变革。资产管道是一种整合和优化应用程序中CSS、...

    中文版的Ruby On Rails实践(PDF)

    这个中文版的《Ruby On Rails实践》PDF文档,无疑为中文学习者提供了一条理解这一强大框架的捷径。 Rails的核心理念是“约定优于配置”(Convention Over Configuration),它通过默认设置简化了许多常见的编程任务...

    使用RSpec 测试Rails 程序.pdf

    2. **测试数据库配置**:确保`.env`或`database.yml`文件中包含用于测试的数据库配置。 3. **RSpec配置**:编辑`spec_helper.rb`来配置RSpec的行为和偏好,例如指定默认的测试环境、启用或禁用特定特性等。 4. **...

Global site tag (gtag.js) - Google Analytics