簡體   English   中英

將AXLSX視圖附加到郵件Rails Mailer

[英]Attaching AXLSX view to mail Rails Mailer

根據axlsx gem的GitHub頁面 ,我應該使用這種語法將xlsx視圖呈現給文件並附加它:

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: "my@email.address", 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方法會影響郵件程序正在嘗試呈現的郵件程序? locgially我的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:NilClassxlsx視圖嘗試引用報表控制器中定義的實例變量時出現nil:NilClass錯誤。

你試過傳遞布局:假嗎? 您使用的是axlsx,axlsx_rails,rails和rubyzip的哪些版本?

最后,所有這些都歸結為將控制器代碼移動到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}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM