1

私はRails 5アプリケーションでpdf請求書の生成を簡単にするためにwicked-pdfを使用しています。 wicked-pdfのpdf機能を利用する2つのアクションがあります。最初のアクションはpdfを生成し、それを新しいブラウザウィンドウにレンダリングします。 2番目の方法はpdfを電子メールに添付します。wicked_pdfとrailsを使用したエンコーディングエラーActiveJob

これらの操作はどちらも問題なく動作します。この問題は、ActiveJob/Sidekiqを使用してpdfメーラーアクションを 'deliver_later'に設定したときに発生します。私は、私はというエラーを提示しています 'deliver_later' を追加する場合:UTF-8

にASCII-8BITから "\ XFE"

を私は "deliver_now" を使用している場合、このエラーは発生しません。コマンド。 「deliver_now」を使用すると、電子メールを送信し、PDFを正しく添付します。

invoice_mailer

... 
def create 
    respond_to do |format| 
    format.html do 
     pdf = render_to_string(pdf: @order.ruling_invoice, 
          template: "orders/invoices/show.pdf.haml", 
          encoding: "utf8", 
          locals: { order: @order.decorate} 
         ) 
     SendInvoiceMailJob.new.perform(@order, pdf, @order.token) 
     redirect_to order_url(id: @order.id, subdomain: current_company.slug),  notice: "This invoice has been emailed." 
    end 
    end 
end 
... 

send_invoice_mail_job.rb

... 
def perform(order, pdf, order_token) 
    InvoiceMailer.send_invoice(order, pdf, order_token).deliver_later 
end 
... 

invoices_controller.rb:ここ

は郵送アクション、メーラーや仕事のための私のコードの一部です。 rb

... 
def send_invoice(order, pdf_invoice , invoice_token) 
    @order = order 
    attachments["#{invoice_token}.pdf"] = pdf_invoice 
    mail(
    to: @order.email, 
     from: @order.seller_email 
    ) 
end 
... 

なぜこのコードはsend_invoice_mail_job.rbで "deliver_now"を使用しても動作しますが、 "deliver_later"を使用しても機能しません。

+0

解決策は見つかりましたか?私は同じ問題を抱えています – moondaisy

+0

@moondaisy私はしました。私は明確に覚えていないので、私が行ったことを見て周りを見なければならないだろう – Herm

+0

時間がある場合は、ここに答えとして投稿してください:)私はこれを参照して他の質問は見つかりませんそれを行う方法の例 – moondaisy

答えて

1

ジョブ引数にバイナリデータ(PDF)を投げることはできません。

関連する問題