Rails 3 по электронной почте злой вопрос PDF

У меня есть драгоценный камень "wicked_pdf" и драгоценный камень "combine_pdf" в приложении Rails 3.2. Он отлично работает, если я показываю PDF в браузере.

Я хотел бы отправить по электронной почте PDF. Мой текущий код отправляет электронное письмо, но pdf просто мусор:

введите здесь описание изображения

Это код контроллера:

  def pdfemail
    @costprojects = Costproject.find(params[:costproject_ids])
    respond_to do |format|
      format.html
      format.pdf do
        pdf = CombinePDF.new
        @costprojects.each do |costproject|
          @costproject = costproject
          pdf2 = render_to_string pdf: "Costproject.pdf", template: "costprojects/viewproject", encoding: "UTF-8"
          pdf << CombinePDF.parse(pdf2)
          costproject.attachments.each do |attachment|
            pdf << CombinePDF.parse( Net::HTTP.get( URI.parse( attachment.attach.url ) ) )
          end
        end
        pdf = pdf.to_pdf
        SendReport.send_report(pdf).deliver
        redirect_to :back
        flash[:notice] = 'Email containing pdf has been sent to you!'
      end
    end
  end

А это мой почтовик:

  def send_report(pdf)
    tomail = "[email protected]"
    frommail = "[email protected]"
    attachments['Report.pdf'] = pdf
    mail(
        :to => tomail,
        :from => frommail,
        :subject => "Report pdf")
  end

Опять же - форматирование pdf работает нормально, когда я отображаю в браузере.

Спасибо за помощь!


person Reddirt    schedule 16.06.2015    source источник


Ответы (1)


см. этот вопрос.

В основном вам нужно изменить его на что-то вроде:

attachments['Report.pdf'] = WickedPdf.new.pdf_from_string( render_to_string(:pdf => "report",:template => "costprojects/viewproject") )

person WhyEnBe    schedule 16.06.2015
comment
Мой код контроллера используется для выбора нескольких проектов затрат вместе с любыми вложениями S3, которые у них есть. Код контроллера отлично работает, если я отображаю полученный PDF-файл в браузере. - person Reddirt; 16.06.2015