0

現在、mail_form + simple_form gems を使用して、ユーザーが自分のサイトで「お問い合わせ」フォームを送信した後、自分にメールを送信しています。次に、フィールドをデータベースにも送信します。ここではすべて正常に動作しています。

送信後、「ありがとう」メッセージとその他のコピーを含む 2 番目のメールをユーザーのメール アドレスに送信できるようにしたいと考えています。メッセージをフラッシュで投稿できることは知っていますが、私の場合はユーザーへの電子メールの方が適しています。

以下のコードに基づいてこれを行う方法について、誰かがガイダンスを提供してもらえますか? ありがとう!

モデル: page.rb

class Page < ActiveRecord::Base
  include MailForm::Delivery
  attribute :name,      :validate => true
  attribute :company
  attribute :email,     :validate => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i
  attribute :message
  attribute :nickname,  :captcha  => true

  def headers
    {
      :subject => "New Lead from Composites First",
      :to => "myemail@myemail.com",
      :from => "myemail@myemail.com"
    }
  end
end

コントローラー: pages_controller.rb

class PagesController < ApplicationController
  def index
  end

  def basicform
    @page = Page.new
  end 

  def create
    @page = Page.create(page_params)
    if @page.save   
      respond_to do |format|
        format.html { redirect_to '/' }
        format.json { } 
      end
    else
      respond_to do |format|
        format.html { }
        format.json { }
      end
    end
    @page.request = request
    if @page.deliver
    else
      flash[:error] = 'Cannot send message.'
      format.html { redirect_to '/' }
    end
  end

  private 

  def page_params
      params.require(:page).permit(:name, :company, :email, :message)
  end
end
4

1 に答える 1

0

after_createお礼メールをトリガーするコールバックを作成できます。

ページ モデルでは、次のようにコールバックを記述します。

after_create :send_thank_you_email

def send_thank_you_email
  email = self.from 
  MyMailer.send_thank_you_email(email).deliver_now
end

MyMailer書き込みsend_thank_you_emailアクションで、お礼メールのメーラー ビューを作成します。お役に立てれば。ありがとう!

于 2015-10-22T14:55:04.903 に答える