Ruby on Rails 3.0 日記
第3回: コントローラとビューの生成(1)
前回に引き続き、簡単なタスク管理ツール nchak を Rails 3.0 で作っていきます。
コントローラの生成
タスクを管理するツールですから、tasks というデータベーステーブル、それを扱う Task というモデル、そして tasks コントローラを作ることになりますね。
これらを一挙に生成してくれる scaffold というツールもありますが、現実の開発現場で使っている人はあまりいないと思います。別々に作っていきましょう。
さて、どこから作り始めましょうか。
かつてはデータベーススキーマをきっちりと作ってから、コントローラとビューの実装に着手するという順番が普通でしたが、近年は逆順(コントローラ・ビューの後でモデル)で実装するのがトレンドです。
データ構造を決める前にユーザーインターフェースを実装すべしという考え方は Outside-In と呼ばれ、「ビヘイビア駆動開発」の大原則の1つです。外側(ユーザーインターフェース)から先に作った方が「要求仕様」に沿った自然な設計を持つアプリケーションに仕上がりやすい、と考えられています。本当の意味で Outside-In を実践するためには、テストコードを書きながらアプリケーションを開発することが前提になります。しかし、それは初心者にとって相当に高いハードルなので、この連載では触れないことにします。また、別の機会に…
index アクションを持つ tasks コントローラを生成するには、ターミナルで次のコマンドを実行します。
rails generate controller tasks index
このコマンドは、副作用として index アクションに対応するビューを生成します。
index アクションには、タスクの一覧を表示する機能を実装していくことにしましょう。
リソースの登録
次に tasks コントローラに対応するリソースを登録します。
Rails における「リソース」という言葉の厳密な意味は知らなくても結構です。とりあえずは、簡潔な URL でアクションを呼び出すのに必要な設定であると考えてください。
エディタで config/routes.rb を開いてください。
先ほどのコマンドを実行した直後は、次のようになっています(コメント行は除去してあります)。
Nchak::Application.routes.draw do get "tasks/index" end
get "tasks/index" は http://localhost:3000/tasks/index という URL に対して GET メソッドでアクセスが来たら、tasks コントローラの index アクションを実行せよ、という意味です。
これを次のように修正します。
Nchak::Application.routes.draw do resources :tasks, :only => [ :index ] end
かつて routes.rb は、ActionController::Routing::Routes.draw do |map| という記述で始まっていました。すなわち、Rails 2.3 までは、ブロック変数 map に対して resources メソッドを呼び出していましたが、Rails 3.0 ではこのように関数形式で呼び出せるようになりました。(加筆訂正 2010-10-11)
この結果、http://localhost:3000/tasks という URL で tasks コントローラの index アクションを呼び出すことが可能になります。URL に /index が付いている方が直感的には分かりやすいかもしれませんが、Rails コミュニティでは /index なしの URL が好まれます。
ブラウザで http://localhost:3000/tasks を開くと、次のような画面が表示されます。

HTML テンプレートの修正
次に index アクションに対応するビュー(HTML テンプレート)を修正しましょう。
エディタで app/views/tasks/index.html.erb を開くと、こう書かれています。
<h1>Tasks#index</h1> <p>Find me in app/views/tasks/index.html.erb</p>
これを、次のように修正してください。
<h1>タスクの一覧</h1>
ブラウザを読み込み直すと、次のような画面になります。

(2010/04/28)
記事に関するご質問は、 hermes@oiax.jp までメールでお送りください。
ウェブサイト構築の発注先を検討されているお客様は、ご相談フォームをご利用ください。
- はじめに
- 第1回: インストール (2010/04/24)
- 第2回: 新規アプリケーションの作成 (2010/04/25)
- 第3回: コントローラとビューの生成(1) (2010/04/28)
- 第4回: コントローラとビューの生成(2) (2010/04/29)
- 第5回: データベーステーブルとモデル (2010/05/01)
- 第6回: タスクの一覧 (2010/05/02)
- 第7回: タスクの新規追加フォーム (2010/05/09)
- 第8回: タスクの新規追加 (2010/05/09)
- 第9回: タスクの完了 (2010/05/15)
- 第10回: 完了したタスクの一覧 (2010/05/16)
- 第11回: Bundler (2010/05/17)
- 第12回: ユーザー認証(1) (2010/05/18)
- 第13回: ユーザー認証(2) (2010/05/19)
- 第14回: ユーザーとタスクの関連づけ (2010/05/29)
- 第15回: Devise によるユーザー認証機能の日本語化(1) (2010/10/09)
- 第16回: Devise によるユーザー認証機能の日本語化(2) (2010/10/15)
- 第17回: Devise によるユーザー認証機能の日本語化(3) (2010/10/16)

