3 votes

Rails : Envoyer un pdf généré avec prawn à un email envoyé par ActionMailer ?

J'ai une application de commerce électronique. J'utilise Prawn pour générer des factures au format pdf pour les commandes. J'utilise une configuration standard de Prawn. Dans views/admin/orders, j'ai un fichier appelé show.pdf.prawn. Lorsque le vendeur visualise une commande dans sa section d'administration, il clique sur un lien qui ouvre la version pdf de la vue commandes/show. Tout cela fonctionne parfaitement.

Maintenant, la partie délicate. Lorsqu'une commande est terminée, j'envoie un courriel au vendeur. Ce que j'aimerais faire, c'est joindre la version pdf de la facture des commandes/expositions à cet email. Est-ce possible ? La documentation sur les pièces jointes aux courriels est assez limitée et je n'ai pas été en mesure de trouver des ressources qui décrivent le flux de travail que j'ai décrit.

Tout conseil est le bienvenu.

2voto

Milan Novota Points 10892

L'envoi d'une pièce jointe à un courriel est relativement facile avec ActionMailer :

class InvoiceMailer < ActionMailer::Base

  def email_with_attachment(pdf_invoice)
    .
    .
    .

    attachment "application/pdf" do |a|
      a.filename = "some_invoice.pdf"
      a.body = pdf_invoice
    end
  end

end

Un problème que vous pourriez rencontrer est la génération du fichier pdf en dehors de la méthode prawnto (lorsque vous utilisez le plugin prawnto). Si c'est le cas, je vous recommande fortement d'utiliser cette approche au lieu de cela.

0voto

vdaubry Points 6127

J'ai eu le même problème, j'ai réussi à le résoudre en générant le pdf à partir d'un modèle, ce qui est beaucoup plus facile que d'évaluer le modèle. J'ai répondu à la question ici :

Enregistrer un PDF Prawn en tant que pièce jointe Paperclip ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X