Rails3/問い合わせフォーム
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
&tag(Rails3/問い合わせフォーム);
*目次 [#lc4e6501]
#contents
*関連ページ [#d84b8373]
-[[Rails3]]
-[[SimpleCaptcha]]
*参考情報 [#xd7e1c22]
-[[Rails3で問い合わせフォームを作る - Prototype[beta]:htt...
-[[Contact form in Rails 3 / Mat Harvard:http://matharvar...
-[[Railsの問い合わせフォームからSESでメールを送信する - o...
-[[Rails3.0から3.1への移行とRSS(Atom)フィードの取得 - giv...
-[[Rails3 ActiveRecordではないモデル | ツボニチ:http://ts...
*基本 [#l1a0ade5]
**概要 [#k38dafcc]
-DBに問い合わせ内容を保存しつつメールを送信するか、ただ単...
-DB作るのがめんどくさい場合メール送信するだけでいいかも。
-DBに保存してないタイプのモデルを作成し画面からの情報をう...
** モデルの生成 [#l21e6dca]
-app/models/contact.rbを生成
#pre{{
class Contact
include ActiveModel::Validations
include ActiveModel::Conversion
extend ActiveModel::Naming
attr_accessor :name, :email, :subject, :message
validates :name, :presence => true
# confirmation?が必要
validates :email, :presence => true, :format => { :with...
validates :subject, :presence => true
validates :message, :presence => true
def initialize(attributes = {})
attributes.each do |name, value|
send("#{name}=", value)
end
end
def persisted?
false
end
end
}}
** ActionMailerの設定[#q09f20b6]
***smtpサーバーの設定 [#adee9283]
-[[../メール送信]]を参考にして、development.rb / producti...
*** Mailerの設定[#kc6ce864]
-モデル
#pre{{
class Message < ActionMailer::Base
include ApplicationHelper
default from: "noreply@example.com"
def new_contact(contact)
@contact = contact
mail(:to => "tom@example.com", :subject => "[Contact ...
end
end
}}
-ビュー。app/views/message/new_contact.text.erb
#pre{{
Name: <%= @contact.name %>
Email: <%= @contact.email %>
Subject: <%= @contact.subject %>
Message:
<%= @contact.message %>
}}
**お問い合わせフォームのビュー [#g75b335d]
#pre{{
<%= form_for(@contact, :url => about_create_path, :ht...
<% if @contact.errors.any? %>
<div id="error_explanation">
<h2>エラーが発生しました :</h2>
<ul>
<% @contact.errors.full_messages.each...
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<table class="table table-bordered table-condense...
<tr>
<th class="span2">お名前</th>
<td><%= f.text_field :name, {:class => 's...
</tr>
<tr>
<th class="span2">メール</th>
<td><%= f.text_field :email, {:class => '...
</tr>
<tr>
<th class="span2">題名</th>
<td><%= f.text_field :subject, {:class =>...
</tr>
<tr>
<th class="span2">内容</th>
<td>
<%= f.text_area :message, {:rows => 6...
</td>
</tr>
</table>
<p>
<span style="width:200px;">
<%= f.submit '送信', :name => 'save_button',...
</span>
</p>
<% end %>
}}
**お問い合わせフォームのコントローラー [#sa2a5ab5]
-app/controllers/contacts_controller.rbを作成。
-通常の保存時の処理のように、newで表示し、createで実行す...
-メッセージ送信後エラーの場合は再表示、成功の場合rootに戻...
-この辺は工夫の余地あり。「送信に成功しました」といったメ...
#pre{{
class ContactsController < ApplicationController
def new
@contact = Contact.new
end
def create
@contact = Contact.new(params[:contact])
if @contact.valid?
Message.new_contact(@contact).deliver
redirect_to(root_path, :notice => "Message was succ...
else
flash.now.alert = "Please fill all fields."
render :new
end
end
end
}}
**ルーティングの設定 [#bfd290a1]
-routes.rbを編集する
#pre{{
match 'contact' => 'contacts#new', :as => 'contacts', :v...
match 'contact' => 'contacts#create', :as => 'contacts',...
}}
*Tips [#w54dd97b]
**メールアドレスを併記する [#e46b3a4e]
-[[スパムロボット対策をして、安全にWebサイトにメールアド...
終了行:
&tag(Rails3/問い合わせフォーム);
*目次 [#lc4e6501]
#contents
*関連ページ [#d84b8373]
-[[Rails3]]
-[[SimpleCaptcha]]
*参考情報 [#xd7e1c22]
-[[Rails3で問い合わせフォームを作る - Prototype[beta]:htt...
-[[Contact form in Rails 3 / Mat Harvard:http://matharvar...
-[[Railsの問い合わせフォームからSESでメールを送信する - o...
-[[Rails3.0から3.1への移行とRSS(Atom)フィードの取得 - giv...
-[[Rails3 ActiveRecordではないモデル | ツボニチ:http://ts...
*基本 [#l1a0ade5]
**概要 [#k38dafcc]
-DBに問い合わせ内容を保存しつつメールを送信するか、ただ単...
-DB作るのがめんどくさい場合メール送信するだけでいいかも。
-DBに保存してないタイプのモデルを作成し画面からの情報をう...
** モデルの生成 [#l21e6dca]
-app/models/contact.rbを生成
#pre{{
class Contact
include ActiveModel::Validations
include ActiveModel::Conversion
extend ActiveModel::Naming
attr_accessor :name, :email, :subject, :message
validates :name, :presence => true
# confirmation?が必要
validates :email, :presence => true, :format => { :with...
validates :subject, :presence => true
validates :message, :presence => true
def initialize(attributes = {})
attributes.each do |name, value|
send("#{name}=", value)
end
end
def persisted?
false
end
end
}}
** ActionMailerの設定[#q09f20b6]
***smtpサーバーの設定 [#adee9283]
-[[../メール送信]]を参考にして、development.rb / producti...
*** Mailerの設定[#kc6ce864]
-モデル
#pre{{
class Message < ActionMailer::Base
include ApplicationHelper
default from: "noreply@example.com"
def new_contact(contact)
@contact = contact
mail(:to => "tom@example.com", :subject => "[Contact ...
end
end
}}
-ビュー。app/views/message/new_contact.text.erb
#pre{{
Name: <%= @contact.name %>
Email: <%= @contact.email %>
Subject: <%= @contact.subject %>
Message:
<%= @contact.message %>
}}
**お問い合わせフォームのビュー [#g75b335d]
#pre{{
<%= form_for(@contact, :url => about_create_path, :ht...
<% if @contact.errors.any? %>
<div id="error_explanation">
<h2>エラーが発生しました :</h2>
<ul>
<% @contact.errors.full_messages.each...
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<table class="table table-bordered table-condense...
<tr>
<th class="span2">お名前</th>
<td><%= f.text_field :name, {:class => 's...
</tr>
<tr>
<th class="span2">メール</th>
<td><%= f.text_field :email, {:class => '...
</tr>
<tr>
<th class="span2">題名</th>
<td><%= f.text_field :subject, {:class =>...
</tr>
<tr>
<th class="span2">内容</th>
<td>
<%= f.text_area :message, {:rows => 6...
</td>
</tr>
</table>
<p>
<span style="width:200px;">
<%= f.submit '送信', :name => 'save_button',...
</span>
</p>
<% end %>
}}
**お問い合わせフォームのコントローラー [#sa2a5ab5]
-app/controllers/contacts_controller.rbを作成。
-通常の保存時の処理のように、newで表示し、createで実行す...
-メッセージ送信後エラーの場合は再表示、成功の場合rootに戻...
-この辺は工夫の余地あり。「送信に成功しました」といったメ...
#pre{{
class ContactsController < ApplicationController
def new
@contact = Contact.new
end
def create
@contact = Contact.new(params[:contact])
if @contact.valid?
Message.new_contact(@contact).deliver
redirect_to(root_path, :notice => "Message was succ...
else
flash.now.alert = "Please fill all fields."
render :new
end
end
end
}}
**ルーティングの設定 [#bfd290a1]
-routes.rbを編集する
#pre{{
match 'contact' => 'contacts#new', :as => 'contacts', :v...
match 'contact' => 'contacts#create', :as => 'contacts',...
}}
*Tips [#w54dd97b]
**メールアドレスを併記する [#e46b3a4e]
-[[スパムロボット対策をして、安全にWebサイトにメールアド...
ページ名: