2013-10-05 2 views
2

J'essaye de créer un courrier électronique en utilisant ActionMailer. L'e-mail de facture est envoyé.Rails ActionView Modèle manquant pendant le courrier électronique

Mais, je reçois cette erreur sur l'écran après les e-mails est envoyé:

ActionView::MissingTemplate at /invoices/sendinvoice 
Missing template invoices/sendinvoice, application/sendinvoice 

Ceci est mon invoices_controller.rb

def sendinvoice 
    @invoice = Invoice.find(params[:invoice_id]) 
    InvoiceMailer.invoice_email(@invoice).deliver 
    end 

Ceci est en mailers/invoice_mailer.rb

class InvoiceMailer < ActionMailer::Base 
    default from: "[email protected]" 
    def invoice_email(invoice) 
    @invoice = invoice 
    mail(:to => @invoice.workorder.contact.email, :subject => "New Invoice from " + @invoice.tenant.name) 
    end 
end 

Ceci est en vue/invoice_email.html.erb

<!DOCTYPE html> 
<html> 
<head> 
    <meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/> 
</head> 
<body> 
<h2>Invoice</h2> 

</body> 
</html> 

Ce bouton dans les factures/show.html.erb

<%= link_to 'Send Invoice', invoices_sendinvoice_path(:invoice_id => @invoice), :class => 'btn btn-primary' %> 

Ceci est en routes:

get "invoices/sendinvoice" 

Merci pour l'aide!

Répondre

1

Oui, vous devez spécifier une vue lorsque l'e-mail est envoyé. Votre action n'a pas de vue et les rails le demandent. La vue devrait être dans app/views/factures/sendinvoice.html.erb

+0

OK - merci, j'ai manqué de comprendre cela. – Reddirt

Questions connexes