0

在用户在我的网站上提交“联系我们”表单后,我目前正在使用 mail_form + simple_form gems 向自己发送电子邮件。然后,我还将这些字段提交到数据库。这里的一切工作正常。

我希望能够在提交后直接向用户的电子邮件地址发送第二封电子邮件,其中包含“谢谢”消息和其他副本。我知道可以使用 Flash 发布消息,但在我的情况下,给用户发送电子邮件会更好。

有人可以根据下面的代码提供一些指导吗?谢谢!

型号: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

现在在MyMailersend_thank_you_email操作并为感谢邮件创建邮件视图。希望这可以帮助。谢谢!

于 2015-10-22T14:55:04.903 回答