Создание и отправка PDF в ActionMailer с помощью WickedPDF

я использую рельсы 4.2 и создаю PDF-файлы в actionmailer со следующим кодом:

attachments["abc.pdf"] = WickedPdf.new.pdf_from_string(
  render_to_string(template: "pdf_templates/abc.html", header: {
    content: render_to_string(layout: "header.html")
   }, margin: {
   top: 50, left: 50
   })
  )
  mail to: @user.email, subject: "bla blubb"

Он отлично работает и отображает abc.html.erb. но он игнорирует маржинальные теги и заголовочный файл... если я помещаю ошибку в header.html.erb, рельсы кричат ​​- поэтому его нужно найти и обработать.

я также пробовал это, но та же проблема:

pdf = render template: "pdf_templates/abc.html", footer: {spacing: 20, left: "ABDCDSAFASDF"}
attachments["abc.pdf"] = WickedPdf.new.pdf_from_string(pdf)

я читал о некоторых проблемах с ActionMailer, но не могу их решить, потому что я использую рельсы 4:

wicked_pdf не загружает верхний или нижний колонтитул в ActionMailer

Rails3 - гем wicked_pdf, проблема с нижним колонтитулом, когда вызов из модели почтовой программы действий


person thisisole    schedule 12.05.2015    source источник
comment
Вы пытались включить PdfHelper и использовать render_to_string_with_wicked_pdf вместо render_to_string, как в первом сообщении SO, на которое вы ссылались?   -  person Unixmonkey    schedule 13.05.2015


Ответы (1)


Забавно, я думал, что попробовал включение, которое рекомендует unixMonkey. Теперь я попробовал еще раз, и он работает со следующим кодом... Спасибо, что подтолкнули меня в правильном направлении.

class WelcomeMailer < ApplicationMailer
      include PdfHelper
      helper(MailerHelper)

      def new_customer(user)
         @user = user

         test = render_to_string_with_wicked_pdf(
          pdf: "test.pdf",
          template: "pdf_templates/abc.html",
          header: {html: {template: "pdf_templates/header.html"}}
         )

         attachments["abc.pdf"] = test
         mail to: @user.email, subject: "blaa blubb"
      end
    end
person thisisole    schedule 18.05.2015
comment
При первой попытке у меня не было pdf: "test.pdf". если вы удалите это, это не будет работать. - person thisisole; 18.05.2015