3rdRailによるRailsプログラミング入門

第7回 Controllerクラスの実装と機能テスト(後編)

富田 陽介
Banana Systems株式会社

2009/8/21

Railsアプリケーション開発を支援する統合開発環境「3rdRail」を使って、開発、デバッグ、プロファイリングの手法をマスターしよう(編集部)

 第6回「Controllerクラスの実装と機能テスト(前編)」に引き続き、Controllerクラスの実装ステップを紹介しています。

 前回は、HitokotosControllerの機能テストを実行するところまで行いました。その結果、

  • createメソッドを実行した後のリダイレクト先が、テストで規定されているものと異なっている
  • newメソッドを実行した後、@usersインスタンス変数が(nilでないことが期待されているのに)nilになってしまっている

ことが分かりました。

 今回は、機能テストの実行結果で失敗してしまった部分のソースコードの修正とビューの実装を完了します。また、FavoritesControllerの実装も行います。

HitokotosControllerの本番コード実装

 まず、[Railsエクスプローラー]からtsubuyakiプロジェクト−[コントローラー]の順に展開し、Hitokotosをダブルクリックしてhitokotos_controller.rbを編集エリアに開きます。

 これは、第1回でも確認した、スカフォルド機能により生成されたControllerクラスのソースコードです。ここでは、以下のとおり、HitokotosControllerを書き換えます。

●hitokotos_controller.rb
class HitokotosController < ApplicationController
  # GET /hitokotos
  def index
    @hitokotos = Hitokoto.find(:all)

    respond_to do |format|
      format.html # index.html.erb
    end
  end

  # GET /hitokotos/new
  def new
    @hitokoto = Hitokoto.new
    @users = User.find(:all)

    respond_to do |format|
      format.html # new.html.erb
    end
  end

  # POST /hitokotos
  def create
    @hitokoto = Hitokoto.new(params[:hitokoto])
    @users = User.find(:all)

    respond_to do |format|
      if @hitokoto.save
        flash[:notice] = '「ひとこと」を作成しました'
        format.html { redirect_to(hitokotos_path) }
      else
        format.html { render :action => "new" }
      end
    end
  end

  # DELETE /hitokotos/1
  def destroy
    @hitokoto = Hitokoto.find(params[:id])
    @hitokoto.destroy

    respond_to do |format|
      format.html { redirect_to(hitokotos_url) }
    end
  end
end

 今回、元の(スカフォルド機能により生成された)コードから変更した点は、以下のとおりです。

・使用しないshow、edit、updateメソッドを削除
・format.xmlから始まる行を削除
詳細の説明は割愛しますが、これは、外部システムやサービスなどからXML形式でのレスポンスを要求されたときに、自律的にレスポンス形式をXMLに書き換えるための記述です。今回は使用しないので削除しておきます
・createメソッドの中の、redirect_toに渡している引数を変更
機能テストで規定したリダイレクト先になるように変更します
・new、createメソッドの中で@usersインスタンス変数を読み込むよう記述
機能テストで規定している仕様です

 それでは、再度機能テストを実行し、テストがすべて通ることを確認しましょう。

画面1 HitokotosController機能テスト実行結果(成功)
HitokotosController機能テスト実行結果(成功)

 進捗バーがグリーン表示になりました。以上で、HitokotosControllerクラスの実装は完了です。続いて、HitokotosControllerが作成するビューのひな形(HTMLテンプレート)の実装に入っていきます。

 
1/4
next

Index
Controllerクラスの実装と機能テスト(後編)
Page1
HitokotosControllerの本番コード実装
  Page2
HitokotosControllerが使用するビューの実装
  Page3
FavoritesControllerのアクションメソッド名の決定
FavoritesController機能テストを書き起こす
FavoritesControllerの本番コード実装
  Page4
newメソッドに対応するビューファイルの準備
FavoritesController機能テスト実行確認
FavoritesControllerが使用するビューの実装

index 3rdRailによるRailsプログラミング入門

 Ruby/Rails関連記事
プログラミングは人生だ
まつもと ゆきひろのコーディング天国
 ときにプログラミングはスポーツであり、ときにプログラミングは創造である。楽しいプログラミングは人生をより実りあるものにしてくれる
生産性を向上させるRuby向け統合開発環境カタログ
Ruby on Rails 2.0も強力サポート
 生産性が高いと評判のプログラミング言語「Ruby」。統合開発環境を整えることで、さらに効率的なプログラミングが可能になる
かんたんAjax開発をするためのRailsの基礎知識
Ruby on RailsのRJSでかんたんAjax開発(前編)
 実はAjaxアプリケーション開発はあなたが思うよりも簡単です。まずはRuby on Railsの基礎知識から学びましょう
Praggerとnetpbmで作る画像→AA変換ツール
Rubyを使って何か面白いものを作ってみよう!
 一般的な画像をアスキーアートに変換するツールを作ってみる。さらに出力にバリエーションを持たせてみよう
コードリーディングを始めよう
Railsコードリーディング〜scaffoldのその先へ〜(1)
 優れたプログラマはコードを書くのと同じくらい、読みこなす。優れたコードを読むことで自身のスキルも上達するのだ
  Coding Edgeフォーラムフィード  2.01.00.91


Coding Edge フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

>

Coding Edge 記事ランキング

本日 月間