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::API 可以用来创建只提供API服务(API-Only)的 Rails 应用,不需要整个Rails 栈和模板生成。也可以用来编写在 Web 应用和客户端之间进行数据共享的后端程序,允许开发者创建接受 JSON 格式数据并以传统 RoR ...
2. **Rails框架结构**:学习者需要了解MVC架构,包括模型(Model)、视图(View)和控制器(Controller)各自的作用。模型处理数据逻辑,视图负责展示用户界面,而控制器作为两者之间的桥梁,协调数据传输。 3. **...
《Ruby on Rails 3 Tutorial》是一本专门为初学者设计的指南,旨在帮助读者快速掌握Ruby on Rails这一强大的Web开发框架。Ruby on Rails(简称Rails)是基于Ruby语言的一个开源框架,它采用MVC(Model-View-...
在Ruby on Rails(Rails)框架中,开发人员经常需要实现各种用户交互功能,例如三级联动选择,这在处理如中国省市区这样的地理数据时尤其常见。这篇博客文章“Rails中应用Ext.tree:以中国的省市地区三级联动选择为...
- `-d, --database=DATABASE`: 指定使用的数据库类型(如 MySQL、Oracle、PostgreSQL、SQLite2 或 SQLite3)。如果不指定,默认使用 SQLite3。 - `-r, --ruby-path=PATH`: 指定 Ruby 解释器的路径。如果未指定,则...
Rails之道.pdf 高清 带书签
`GoOnRails`是专门为Rails开发者设计的一个生成器,它允许在Rails应用中集成Go代码,创建Go API服务。这个工具简化了在Rails项目中使用Go进行后端处理的流程,使开发者可以利用Go的性能优势处理高并发请求,同时保留...
Web开发:Ruby on Rails.pdf
本资料“RestFul_Rails_Dev_pdf_v_0.1.zip”包含了《RESTful Rails Development》的翻译版,将深入探讨如何在Rails中实现RESTful的设计模式。 首先,RESTful设计的核心概念是资源(Resources)。在Rails中,资源...
- **Active Record Query Interface**:Rails 4在Active Record中引入了一个新的查询接口,使数据库操作更加直观和高效。 - **Secure Cookies**:为了提高安全性,Rails 4引入了一种新的安全cookie机制,可以更好地...
rails_email_preview, 在 Rails 中,预览和编辑应用程序邮件程序模板 Rails 电子邮件预览 使用这里 Rails 引擎在浏览器中预览电子邮件。 兼容 Rails 4.2 。电子邮件审阅: 所有电子邮件预览的列表: 代表有两个主题...
### Rails Recipes Final.pdf 知识点解析 #### 标题:Rails Recipes Final.pdf - **核心概念**:本书名为《Rails Recipes》,旨在提供一系列针对Ruby on Rails开发过程中的实用技巧和解决方案。 #### 描述:...
Ruby on Rails的PDF生成插件 Wicked PDF使用shell实用程序从HTML向用户提供PDF文件。 换句话说,您无需像通常那样处理PDF生成的DSL,而是只需像通常那样编写HTML视图,然后让Wicked PDF处理繁琐的工作。 Wicked PDF...
- **数据库配置**:在Rails中,数据库的配置通常涉及模型的生成,以及在配置文件中设置数据库连接参数。 ### MVC架构模式 - **MVC架构**:文档中提到的MVC是Rails的核心架构模式,它将应用程序分为三个主要的组件...
一些生成器可以轻松将Rails模型与集成。 我之所以创建它,是因为我浪费了太多的按键来手动复制模型架构以创建graphql类型。 该项目包含用于查看ActiveRecord模型架构的生成器,并为您生成graphql类型。 gql:model...
在Rails 3.1版本中,引入了许多重要更新和改进,使得这个框架更加高效且功能丰富。 首先,让我们深入了解Rails 3.1在资产管道(Asset Pipeline)方面的重要变革。资产管道是一种整合和优化应用程序中CSS、...
这个中文版的《Ruby On Rails实践》PDF文档,无疑为中文学习者提供了一条理解这一强大框架的捷径。 Rails的核心理念是“约定优于配置”(Convention Over Configuration),它通过默认设置简化了许多常见的编程任务...
2. **测试数据库配置**:确保`.env`或`database.yml`文件中包含用于测试的数据库配置。 3. **RSpec配置**:编辑`spec_helper.rb`来配置RSpec的行为和偏好,例如指定默认的测试环境、启用或禁用特定特性等。 4. **...