1

それで、私はこの素晴らしく欠陥のあるチュートリアルに従いました: http://matharvard.ca/posts/2011/aug/22/contact-form-in-rails-3/

...お問い合わせフォームの作成について。それはうまくいきます。唯一の問題は、件名のみを送信することです。おそらく問題は通知メーラーにあると思います:

notifications_mailer.rb

class NotificationsMailer < ActionMailer::Base

  default :from => "noreply@youdomain.dev"
  default :to => "you@youremail.dev"

  def new_message(message)
    @message = message
    mail(:subject => "[YourWebsite.tld] #{message.subject}")
  end

end

もちろん、ユーザーが送信したすべての情報を送信したいと思います...(名前、電子メールアドレス、件名、本文.

また、件名がデフォルトに設定されている本文だけで、これの単純なバージョンをどのように実行できるか疑問に思っていました。(コメント付きの電子メールを私に送信する小さなコメント ボックスが必要です。) そのためにまったく新しいコントローラーとモデルを作成する必要がありますか、それとも両方を処理できますか?

アップデート

通知メーラー ビュー / new.html.erb

Name: <%= @message.name %>

Email: <%= @message.email %>

Subject: <%= @message.subject %>

Body: <%= @message.body %>

連絡先コントローラー

class ContactController < ApplicationController
def new
    @message = Message.new
  end

  def create
    @message = Message.new(params[:message])

    if @message.valid?
      NotificationsMailer.new_message(@message).deliver
      flash[:success] = "Message was successfully sent."
      redirect_to(root_path)
    else
      flash[:error] =  "Please fill all fields."
      render :new
    end
end

end

メッセージ.rb

class Message

  include ActiveModel::Validations
  include ActiveModel::Conversion
  extend ActiveModel::Naming

  attr_accessor :name, :email, :subject, :body

  validates :name, :email, :subject, :body, :presence => true
  validates :email, :format => { :with => %r{.+@.+\..+} }, :allow_blank => true

  def initialize(attributes = {})
    attributes.each do |name, value|
      send("#{name}=", value)
    end
  end

  def persisted?
    false
  end

end

基本的には機能しますが、件名のみを送信します。また、件名以外のすべてを含む完全なメールを一度送信することもできました...しかし、どのように送信したか思い出せません。

このコンピュータを粉々に砕いて暴れまわっていいのか?

はぁ...

再度更新

これは、上記の設定でメールが言うことです:

件名: [liquid.radio] 件名が何であれ。本体:完全無地

これは、私が2週間前に何をしたとしても、彼らが言ったことです。

Subject: Message from liquid.radio
Body: 
A contact enquiry was made by Richard Pryor at 2013-06-17 23:36.

Reply-To: richard@pryor.com 
Subject: Scared for no reason Body: Oh
no... Oh God no! What is that?!

私がしたことは、通知コントローラーをいじっただけです。私は覚えていませんが... 私の人生のために... 私が何をしたか。しかし、ご覧のとおり...完全なメッセージを送信する必要があります...ただし、件名はまったく異なります。

ここで本当にちょっと助けが必要です。

4

2 に答える 2

1

まず、このプロジェクトでは、プロダクション設定を に配置しますconfig/application.rb。GMail ActionMailer の設定を に移動しますconfig/environments/production.rbletter_openerGemfile の開発グループに gem を追加します。

# Gemfile
group :development do
  gem 'letter_opener'
end

letter_opener 設定を開発環境に追加します。

# config/environments/development.rb
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
config.action_mailer.delivery_method = :letter_opener
config.action_mailer.perform_deliveries = true 
config.action_mailer.raise_delivery_errors = true

active_attrジェムを追加

# Gemfile
gem 'active_attr'

必ず実行してくださいbundle install

メッセージ モデルを堅牢な ActiveAttr 実装に置き換えます。

# app/models/message.rb
class Message
  include ActiveAttr::Model

  attribute :name
  attribute :email
  attribute :subject
  attribute :body

  validates_presence_of :name, :email, :subject, :body
  validates :email, :format => { :with => %r{.+@.+\..+} }, :allow_blank => true
end

ルートを改善します。

# config/routes.rb
get 'contact' => 'contact#new', :as => 'contact'
post 'contact' => 'contact#create', :as => 'contact'

メールテンプレートが正しいことを確認してください

# app/views/notifications_mailer/new_message.text.erb
Name: <%= @message.name %>
Email: <%= @message.email %>
Subject: <%= @message.subject %>
Body: <%= @message.body %>

更新: 2013 年 12 月 12 日 Rails で連絡先フォームを作成するための最新のソリューションを探している人を支援するために、GitHub で Rails 3.2 プロジェクトを作成しました。メリークリスマス! https://github.com/scarver2/contact_form_app

于 2013-07-26T13:58:36.053 に答える