2016-08-09 119 views
0

In Schienen 4 verwende ich gem 'wicked_pdf', '1.0.3' und gem 'wkhtmltopdf-binary', '0.9.9.3' für pdf-Generierung. Ich lade sie als Datei,Schienen 4 - Wicked PDF-Datei per E-Mail senden

respond_to do |format| 
    format.html 
    format.pdf do 
    render :pdf => "#{@user.id}_file", 
     :disposition => "attachment", 
     :save_to_file => Rails.root.join('public/download_pdfs', "#{@user.id}_file.pdf"), 
     :layout => false 
    end 
end 

Hier habe ich diese Datei per E-Mail schicke indem Sie diese Zeile in Controller Hinzufügen Email.deliver_sample_file_mail(@user, "#{Rails.root}/public/download_pdfs/#{@user.id}_file.pdf")

In Mailer,

def send_invoice_pdf_mail(user, file_path) 
    filename = file_path.split("/").last 
    attachments["#{filename}"] = File.read(file_path) 
    mail(:to =>user.email, :subject => "File has been sent") do |format| 
    format.html { render :partial =>"/emails/users/sample", :locals=>{:user=>user}, :layout=>"email"} 
    end 
end 

Nun ist die Frage beides Download-Datei und E-Mail senden geschieht zusammen.

Wie kann ich Datei-Download-Funktion vermeiden? Und wie kann ich .pdf Datei erzeugen, so dass es nur an eine E-Mail-ID senden soll?

Antwort

1

Sie können

pdf = render_to_string pdf: "#{@user.id}_file", encoding: "UTF-8" 

# then save to a file 
save_path = Rails.root.join('public/download_pdfs','#{@user.id}_file.pdf') 
File.open(save_path, 'wb') do |file| 
    file << pdf 
end 

Hoffnung ohne Download-Datei wie unten sparen, das wird Ihnen helfen.

+0

"Vorlage: tmplates/pdf", Anweisung entfernen. –

+0

bitte, siehe meine Bearbeitungen –

+0

Danke. Es funktioniert jetzt. –