2017-12-30 15 views
0

Rails 5でActionMailerを使用して連絡フォームから電子メールを受信しようとしていますが、フォームに作成されたリソースのパラメータをメソッドを受信し、アプリの電子メールに送信します。RailsでActionMailerを使用してフォームから電子メールを受信する

コントローラ/ contacts_controller.rb:

class ContactsController < ApplicationController 

    def index 
    @contact = Contact.new 
    end 

    def create 
    @contact = Contact.new(contact_params) 
    if @contact.save 
     DefaultMailer.receive(@contact).deliver 
     redirect_to root_path 
    else 
     render :new 
    end 
    end 

    private 
    def contact_params 
    params.require(:contact).permit(:name, :email, :subject, :body) 
    end 
end 

メーラー/ default_mailer.rb:

class DefaultMailer < ApplicationMailer 
    default from: "[email protected]" 

    def receive(email) 
    mail.create(subject: email.subject, body: email.body) 
    end 
end 

それは500サーバーエラーを与え、未定義のメソッドが `nilのために」ヒト化言う:NilClassを受信機に方法。

答えて

1

こちらはお問い合わせフォームですので、メールを自分宛に送信したい場合は、to:のKey-Valueペアが必要です。

連絡先の名前とメールアドレスを含めると、返信先を知ることができます。

def receive(contact) 
    mail(to: "[email protected]", 
     subject: contact.subject, 
     body: contact.body.to_s + 
      "\n (Sender is #{contact.name} and their email is #{contact.email})") 
end 
関連する問題