2013-10-05 6 views
0

Я пытаюсь использовать ActionMailer для отправки электронной почты.Rails ActionMailer параметр - строка

Это invoice_mailer.rb

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

Это код контроллера:

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

Это код вида:

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

Ошибки я получаю из этой строки в invoice_mailer:

mail(:to => @invoice.workorder.contact.email, :subject => "nDeavor New Invoice") 

Это ошибка:

undefined method `workorder' for "10":String 

Спасибо за помощь!

ответ

0

В вашем методе sendinvoice у вас есть @invoice = params[:invoice_id], который присваивает 10 @invoice, а затем вы передаете его в InvoiceMailer.invoice_email.

Возможно, вы захотите, чтобы это было @invoice = Invoice.find(params[:invoice_id]). Это даст вам объект счета с идентификатором 10.

+0

Спасибо за ответ! – Reddirt

Смежные вопросы