211月2007
Filed under: Web技術, rails
Author: ueblog
前回までで、プロジェクトの作成と環境の作成が終わった。さていよいよ画面フローを作成していきます。
今回の仕様を確認すると、
フォーム画面(form) → 確認画面(confirm) → 完了画面(end)
↑ ↑
(フォームチェック) (DB格納&メール送信)
こんな感じで、3つのactionと3つのviewでできあがっている。画面は上記のようにform→confirm→endとします。
今回は勉強のためにscaffoldという便利な仕組みは利用せずにいこうと思う。
まずはcontrollerをいじります。
RUBY:
-
# 今回のプロジェクトへ移動
-
cd rails_project/sample
-
-
vi app/controllers/contact_controller.rb
-
class ContactController <ApplicationController
-
model :contact
-
-
def form
-
@contact = Contact.new()
-
end
-
def confirm
-
@contact = Contact.new(@params[:contact])
-
end
-
def end
-
@contact = Contact.new(@params[:contact])
-
end
-
end
このようにactionに対応する名前をつけた、メソッドを用意するだけです。
そしてmodelを利用することを宣言しています。これはあとでDBに値を保存したり、値の検証(validate)するのに利用します。
そしてviewを用意する。名前は各actionに対応する名前+.rhtmlとするようです。
vi app/views/contact/form.rhtml
HTML:
-
-
-
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-
</head>
-
-
-
<%= start_form_tag :action => 'confirm' %>
-
<%= error_messages_for 'contact' %>
-
-
<%= text_field("contact", "personal") %>
-
-
-
<%= text_field("contact", "email", "size" => 50) %>
-
-
-
<%= text_area("contact", "message", "cols" => 50, "rows" => 10) %>
-
-
<%= submit_tag("確認画面へ") %>
-
-
<input name="reset" class="sbutton" value="リセット" type="reset" /> <%= end_form_tag %>
-
</body>
-
</html>
Rails特有のタグで作成しています。詳しくはRailsのapiをご参照ください。
また、nameにはDBのテーブルと同じ名前で割り当てています。
確認画面
vi app/views/contact/confirm.rhtml
HTML:
-
-
-
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-
</head>
-
-
-
<red>下記の入力内容でよろしいでしょうか。</red>
-
<%= start_form_tag :action => 'end' %>
-
<%= hidden_field("contact", "personal", "value" => @contact.send("personal")) %>
-
<%= hidden_field("contact", "email", "value" => @contact.send("email")) %>
-
<%= hidden_field("contact", "message", "value" => @contact.send("message")) %>
-
お名前:<%=h @contact.send("personal") %>
-
-
E-Mail:<%=h @contact.send("email") %>
-
-
お問合せ内容:<%=h @contact.send("message") %>
-
-
<%= submit_tag("上記の内容で送信する", :disable_with=>'送信処理中...') %>
-
<input class="sbutton" value="戻る" onclick="history.back()" type="button" /> <%= end_form_tag %>
-
</body>
-
</html>
sessionで引継ぎが普通かもしれないですが、今回はhiddenにてフォームの引継ぎをします。特徴はsubmit_tagにてdisable_withパラメータを利用すると、いわゆるフォームの2度押しができないようにjavascriptにてボタンを無効化してくれます。こういうのが、フレームワークの機能としてあるのは便利ですね。
あと戻るボタンは手抜きでhistory.backで・・・
完了画面。これはただのhtmlです。
vi app/views/contact/end.rhtml
HTML:
-
-
-
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-
-
</head>
-
-
<h1>お問い合わせ ありがとうございました。
</h1>
-
</body>
-
</html>
これで
http://domain:3000/sample/contact/form
http://domain:3000/sample/contact/confirm
http://domain:3000/sample/contact/end
というURLにて画面遷移を確認できます。
これだけでは何もおきませんが、一通りの動きが完了しました。
URLのマッピングとcontroller、viewの関係はすごくわかりやすいですね。
さて次回は値の検証部分に手をつけます。
関連する記事
←ぽちっとな
<<Ruby on Railsでフォームを作成する#1(事前準備編)
Ruby on Railsでフォームを作成する#3(フォームチェック)>>

(
3)

(
0)

(
0)

(
0)
Total: 3