1

ActiveAttr について Railscastで見たアプローチを使用して、連絡先フォームを作成しようとしています (これにより、データベースに支えられていないメッセージ モデルが得られます)。

このコードは、メッセージのコントローラーにあります。

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。これを機能させるために知っておくべきこと、または設定する必要があることの概要を教えてください。ありがとうございました。

4

1 に答える 1

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 %>
于 2012-12-19T21:44:05.557 に答える