。附接AXLSX以邮寄的Rails梅勒
问题描述:
按照GitHub Page为axlsx
宝石,我应该用这个语法来呈现XLSX视图文件并将其安装:。附接AXLSX以邮寄的Rails梅勒
xlsx = render_to_string handlers: [:axlsx], formats: [:xlsx], template: "users/export", locals: {users: users}
attachments["Users.xlsx"] = {mime_type: Mime::XLSX, content: xlsx}
这里是我的邮箱方法:
xlsx = render_to_string(handlers: [:axlsx], formats: [:xlsx], template: 'v1/reports/reportxyz', params: {start_date: '2016-09-12', period: 'weekly'})
attachments["report.xlsx"] = {content: xlsx, mime_type: Mime::XLSX}
mail(to: "[email protected]", subject: "Report", format: "text")
但是我得到这个错误,当我尝试并调用邮件的方法:
ActionView::MissingTemplate: Missing template layouts/mailer with {:locale=>[:en], :formats=>[:xlsx], :variants=>[], :handlers=>[:axlsx]}. Searched in:
* "path/to/project/app/views"
为什么render_to_string
方法会影响邮件程序查看邮件程序尝试呈现的内容?在我的app/views/layouts
文件夹中没有mailer.xlsx.axlsx
文件,而是我试图使用其他电子邮件的mailer.text.erb
。
编辑
我改变渲染线xlsx = render_to_string(template: 'v1/reports/azamara_social', params: {start_date: '2016-09-12', period: 'weekly'})
而现在看来,试图渲染xlsx
看法,但当然得到nil:NilClass
错误时xlsx
视图试图引用报告中所定义的实例变量控制器。
答
最后,这一切都归结为将控制器代码移动到一个lib文件。这样我在控制器中调用它来获取数据,如果它需要通过Web请求呈现以及通过Mailer方法重新创建视图模板正在查找的@variables
。
下面是报告邮件法的成品突出的部分:
data = ReportUtils.get_data(args)
xlsx = render_to_string(template: 'path/to/report.xlsx', locals: {:@period => period, :@date_ranges => data[:date_ranges], :@data => data[:data]})
attachments["report.xlsx"] = {content: xlsx, mime_type: Mime::XLSX}
答
您是否尝试过传递布局:false?你使用的是什么版本的axlsx,axlsx_rails,rails和rubyzip?