将表单发送给rails中的两个收件人

时间:2015-02-22 20:41:43

标签: ruby-on-rails email actionmailer

我的导轨型号registrations包含以下字段

attr_accessible :address, :company, :name, :phone, :email

我已成功通过用户发送的电子邮件向用户发送邮件,并使用动作邮件成功运行

def create
    @registration = Registration.new(params[:registration])

    respond_to do |format|
      if @registration.save
        UserMailer.registration_confirmation(@registration).deliver

        format.html { redirect_to root_path, notice:"  Thanks! #{@registration.name}, Your registration have been
        confirmed & your seat reserved" }
        format.json { render :show, status: :created, location: @registration }
      else
        format.html { render action: "new" }
        format.json { render json: @registration.errors, status: :unprocessable_entity }
      end
    end
  end  

并且注册邮件正如此

def registration_confirmation(registration)

    @registration = registration
      @greeting = "Hi"
    mail(to: @registration.email, subject: 'Welcome')
  end 

效果很好......

我想要达到的目的是能够将邮件发送到另一个电子邮件地址,例如(admin@gmail.com),说明用户已注册并且还显示注册详细信息...谢谢

1 个答案:

答案 0 :(得分:1)

我会生成一个专门针对应发送给管理员的通知的新邮件。

rails g mailer AdminMailer registration_notice

然后,您可以将AdminMailer registration_notice编辑为与您的UserMailer类似,但使用不同的收件人:

  def registration_notice(registration)
    @registration = registration
    mail(to: 'admin@gmail.com', subject: 'A new user has registered')
  end

将您要包含的注册详细信息放入registration_notice.html.erb(或文本)的视图中。

然后在调用UserMailer之后立即将控制权添加到控制器的创建操作中:

  def create
    @registration = Registration.new(params[:registration])

    respond_to do |format|
      if @registration.save
        UserMailer.registration_confirmation(@registration).deliver
        AdminMailer.registration_notice(@registration).deliver
        # etc
      end
    end
  end

您可能还想考虑在后台发送邮件,而不是让用户等待创建请求完成,但这超出了这个问题的范围。