TOPシステム開発> コントローラ
Ruby on Rails入門
Ruby on Rails入門

第3回:アーキテクチャと検索機能の追加
著者:DTS  五座 淳一   2006/6/7
前のページ  1  2  3   4  次のページ
コントローラ

   コントローラはユーザからのリクエストの受け口であり、アプリケーションの処理の中心的な役割を果たします。モデルと協調してビューに結果を渡します。

   アプリケーション「アドレス帳」のコントローラは、ContactsControllerクラス(app/controllers/contacts_controller.rb)1つだけです。このクラスにすべてのアクションが定義されています。

   リスト3は、ContactsControllerクラスに定義されたeditアクションです。editアクションでは、ビューで使用するアドレスカードの情報をデータベースより取得し、@contactに格納しています。

リスト3:editアクション
def edit
   @contact = Contact.find(params[:id])
end

   @からはじまる変数はインスタンス変数であり、格納した値はビューで参照することができます。先ほど取り上げた編集画面のビュー(リスト2)を見てみましょう。このインスタンス変数が参照されていることがわかります。


検索機能を追加する

   ここからはアプリケーション「アドレス帳」に検索機能を追加しながら、Railsの開発方法を説明していきます。

   今回実装する検索機能は、一覧表示の上部に検索キーワードを入力するテキストフィールドとSearchボタンです(図3)。ここに入力されたキーワードを使ってアドレス帳に保存されてある名前に対して前方一致検索を行います。

検索機能を追加した一覧表示画面
図3:検索機能を追加した一覧表示画面


ビューの変更

   リスト4は「検索キーワードを入力するためのフォーム(1)」と「検索の絞込みを解除し、すべてのアドレスを表示するためのリンク(2)」を追加した一覧表示のビューです。リスト4の白い記述が追加した箇所となります。

リスト4:app/views/contacts/list.rhtml(一覧表示画面)
<h1>Listing contacts</h1>

<%= start_form_tag :action => 'search' %> <!-- (1) -->
   <%= text_field :contact, :name, :value => @keyword %>
   <%= submit_tag 'Search' %>
<%= end_form_tag %>


(省略)

<%= link_to 'New contact', :action => 'new' %>
<%= link_to 'All contacts', :action => 'list' if @keyword %> <!-- (2) -->

   ここでもいくつかのヘルパーメソッドが登場しています。テキストフィールドには「text_field」、サブミットボタンには「submit_tag」、リンクには「link_to」というヘルパーメソッドが使われています。

前のページ  1  2  3   4  次のページ


株式会社DTS  五座 淳一氏
著者プロフィール
株式会社DTS  五座 淳一
技術部所属。入社以来、交換機や携帯電話、Webシステムなど様々な開発を担当する。Ruby on Rails上に構築したオープンソースのCMS「Rubricks」(http://rubricks.org/)のコミッタ。


INDEX
第3回:アーキテクチャと検索機能の追加
  Scaffold
  モデル
コントローラ
  コントローラの変更