Ruby on Rails 3.2のscaffoldからお問い合わせフォーム(確認画面あり)モドキを作ってみた
Ruby on Railsを触ってみることにしました。2008年頃にRubyを触ってはいた(Rubyを勉強しようと思ってはじめた日記 - Rubyist)ので、Rubyは久々です。たしか、この時、Railsを少し試して、仕事で使わなかったから、覚えずに終わってしまいました。今回も、仕事で使う予定はないのですが、Herokuが面白いということもあって、Railsも触ってみよう、と思いました。
というわけで、お問い合わせフォームなんかを作ってみることにしました。今回は、Scaffoldを使って作ってみます。あと、MySQLではなくて、SQLiteで。
アプリケーションを用意
$ rails new inquiry $ cd inquiry
DBの用意
$rake db:create
scaffold
- この時に、DBの定義がされる
$rails generate scaffold Result name:string mail:string tel:integer body:text
DBを用意
rake db:migrate
バリデーション設定
- メールアドレスのチェックは正規表現らしい(とりあえず英文字のみにしてみました)
- メールアドレスは、再入力もよくあります
- 調べてみたら、そいう機能がありました
- http://guides.rubyonrails.org/active_record_validations_callbacks.html
class Result < ActiveRecord::Base validates :name, :presence => true validates :mail, :presence => true, :confirmation => true, :format => {:with=>/^[a-zA-z]+$/, :message=>"メールアドレスではありません"} validates :mail_confirmation, :presence => true validates :tel, :presence => true end
テンプレート編集
- app/views/results/_form.html.erb
- メールアドレス確認用のmail_confirmationを追加
<div class="field"> <%= f.label :name %><br /> <%= f.text_field :name %> </div> <div class="field"> <%= f.label :mail %><br /> <%= f.text_field :mail %> </div> <div class="field"> <%= f.label :mail_confirmation %><br /> <%= f.text_field :mail_confirmation %> </div> <div class="field"> <%= f.label :tel %><br /> <%= f.number_field :tel %> </div> <div class="field"> <%= f.label :body %><br /> <%= f.text_area :body %> </div> <div class="actions"> <%= f.submit %> </div>
確認画面を作る
- バリデーションだけする
- ルーティングを調整する必要がある
ルーティング
- conf/routes.rb
match "/results/confirm" => "results#confirm" resources :results do end
コントローラー
- save(save!)だと保存
- saveと、save!で意味が違うらしい(が、それはまた今度)
- !とか?で処理が異なるのは、Ruby的だと思う
- validateだけを実行したい場合は?
- valid?というメソッドになる
- validateが複数ある場合は?については、調査
ソース
app/controllers/results_controller.rb
# GET /results/confirm def confirm @result = Result.new(params[:result]) respond_to do |format| if @result.valid? # 確認画面 format.html else # エラー format.html { render :action => "new" } end end end
完了画面
今回作っていないけれど、ルーティングをきちんとすれば出来そう
まとめ
ざっくりとつくってみたけれど(ざっくり過ぎるけれど)、Rails登場以後のフレームワークについて、影響を与えているだけあり、スジの通ったフレームワークの印象を受けました。
もちろん、もっと作って壊し、作って壊ししてみないと、分かってこないことも多いので、もう少し作ってみたいです。
参考
- 作者: 松田明,大竹智也,はまちや2,外村和仁,横野巧也,島田慶樹,増井俊之,ミック,和田裕介,伊藤直也,塙与志夫,大沢和宏,原悠,浜本階生,uupaa,矢野りん,中島聡,中島拓,角田直行,WEB+DB PRESS編集部
- 出版社/メーカー: 技術評論社
- 発売日: 2010/08/24
- メディア: 大型本
- 購入: 29人 クリック: 354回
- この商品を含むブログ (39件) を見る