如何在Rails中为联系表单设置邮件传递?

时间:2012-12-19 21:07:12

标签: ruby-on-rails forms actionmailer

我正在尝试使用我在Railscast about ActiveAttr中看到的方法构建联系表单(它为我提供了一个不受数据库支持的Message模型)。

此代码位于Messages:

的控制器中
class MessagesController < ApplicationController
  def new
    @message = Message.new
  end

  def create
   @message = Message.new(params[:message])
   if @message.valid?
     # TODO send message here
     redirect_to root_url, notice: "Message sent! Thank you for contacting us."
   else
     render "new"
   end
  end
end

我不知道我需要编写哪种代码才能在create操作期间将联系表单输入(消息)发送到特定的电子邮件地址。有人请给我一个概述我需要知道或需要设置什么才能使这项工作?谢谢。

1 个答案:

答案 0 :(得分:3)

您可以添加类似的内容。

def create
  @message = Message.new(params[:message])
  if @message.valid?
    UserMailer.send_message(@message).deliver
    redirect_to whatever_path, notice: "Message sent."
  else
    render "new"
  end
end

您需要创建一个邮件程序。这很简单,Rails已经有了很好的指导方法。 http://guides.rubyonrails.org/action_mailer_basics.html

创建邮件程序

rails generate mailer UserMailer

然后在您的UserMailer app\mailers\user_mailer.rb

def send_message(message)
  @message = message
  email = "myemail@example.com"
  mail to: email, subject: "You have received a message"
end

然后创建您的电子邮件视图app\views\user_mailer.txt.erb

You have a new message

Your message says

<%= @message.whatever_attribute %>