2

ActionMailer を使用してメールを作成しようとしています。請求書の電子メールが送信されます。

しかし、メールが送信された後、画面に次のエラーが表示されます。

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

これは私のinvoices_controller.rbにあります

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

これは mailers/invoice_mailer.rb にあります

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

これは views/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>

これは、invoices/show.html.erb のボタンです。

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

これはルートにあります:

  get "invoices/sendinvoice"

助けてくれてありがとう!

4

1 に答える 1

1

はい、メールの送信時に 1 つのビューを指定する必要があります。あなたのアクションにはビューがなく、レールがそれを求めています。ビューは app/views/invoices/sendinvoice.html.erb にある必要があります

于 2013-10-05T03:10:56.167 に答える