Rails 3の機能にお問い合わせください
-
02-10-2019 - |
質問
次のフィールドを使用して、Rails 3でお問い合わせフォームを作成したいと思います。
- 名前
- Eメール
- メッセージタイトル
- メッセージ本文
投稿されたメッセージは私のメールアドレスに移動することを目的としているため、メッセージをデータベースに必要とする必要はありません。使用する必要がありますか ActionMailer
, 、それのための宝石やプラグインはありますか?
解決
これ チュートリアルは優れた例です - そしてそれはRails3です
アップデート:
この記事 以前に投稿したものよりも良い例です。
2番目の更新:
また、で概説されているテクニックのいくつかをマージすることをお勧めします このRailscast に Active_attr Gem、ライアンベイツが連絡先ページのタブレスモデルをセットアップするプロセスを説明します。
3番目の更新:
私は自分のものを書きました テスト駆動型のブログ投稿 それについて
他のヒント
実装は、残りの仕様にできるだけ近いように更新しました。
基本セットアップ
使用できます mail_form gem. 。インストールした後、単に名前のモデルを作成します Message
ドキュメントで説明されているのと同様です。
# app/models/message.rb
class Message < MailForm::Base
attribute :name, :validate => true
attribute :email, :validate => /\A([\w\.%\+\-]+)@([\w\-]+\.)+([\w]{2,})\z/i
attribute :message_title, :validate => true
attribute :message_body, :validate => true
def headers
{
:subject => "A message",
:to => "contact@domain.com",
:from => %("#{name}" <#{email}>)
}
end
end
これにより、すでにテストできます コンソールを介して電子メールを送信します.
お問い合わせページ
別の連絡先ページを作成するために、次のようにします。
# app/controllers/messages_controller.rb
class MessagesController < ApplicationController
respond_to :html
def index
end
def create
message = Message.new(params[:contact_form])
if message.deliver
redirect_to root_path, :notice => 'Email has been sent.'
else
redirect_to root_path, :notice => 'Email could not be sent.'
end
end
end
ルーティングをセットアップします。
# config/routes.rb
MyApp::Application.routes.draw do
# Other resources
resources :messages, only: [:index, :create]
match "contact" => "messages#index"
end
部分的なフォームを準備してください。
// app/views/pages/_form.html.haml
= simple_form_for :contact_form, url: messages_path, method: :post do |f|
= f.error_notification
.form-inputs
= f.input :name
= f.input :email, label: 'Email address'
= f.input :message_title, label: 'Title'
= f.input :message_body, label: 'Your message', as: :text
.form-actions
= f.submit 'Submit'
フォームをビューでレンダリングします。
// app/views/messages/index.html.haml
#contactform.row
= render 'form'
この例のコードを機能させることはできませんでした。モデルを作成してから少し複雑になると思います。
Anywat、私は動作した連絡先フォームを作成し、それについてブログを書きました。テキストはポルトガル語ですが、コード自体は(ほとんど)英語です http://www.rodrigoalvesvieira.com/formulario-contato-rails/
注:SMTPではなくSendMailを使用しました。
このリンクを介してお問い合わせの宝石を使用できます。 https://github.com/jdutil/contact_usドキュメントは明確で、簡単に使用できます。
特徴:
- 検証
- 簡単/フィールドを削除します
- 単純な構成