2016-09-21 4 views
0

Согласно GitHub Page для axlsx драгоценного камня, я должен использовать этот синтаксис, чтобы сделать вид XLSX в файл и прикрепить его:Прикрепление AXLSX вид на почту Rails Mailer

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 влияет на то, что почтовый ящик просматривает почтовой программой? locgially У меня нет файла mailer.xlsx.axlsx в моей папке app/views/layouts, но, скорее, mailer.text.erb Я стараюсь использовать как и другие электронные письма.

EDIT

Я изменил рендер строку xlsx = render_to_string(template: 'v1/reports/azamara_social', params: {start_date: '2016-09-12', period: 'weekly'})

И теперь, кажется, попробовать и сделать xlsx вид, но, конечно, получает nil:NilClass ошибки, когда xlsx вид пытается ссылаться на переменные экземпляра, определенные в отчетах контроллер.

ответ

0

В конце концов все сводилось к перемещению кода контроллера в файл lib. Таким образом, я вызываю его в контроллере, чтобы получить данные, если их нужно визуализировать через веб-запросы, а также через метод 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} 
-1

Вы пробовали пропустить макет: false? Какие версии axlsx, axlsx_rails, rails и rubyzip вы используете?

Смежные вопросы