初期画面(ゲスト向け)一応完成

初期画面のゲスト用のテストは、このようになりました。

  def test_index_for_guest
    get :index
    assert_response :success

    # ログインと新規登録へのリンクを表示しているか
    assert_tag 'a', :attributes => { :href => '/client/login' }
    assert_tag 'a', :attributes => { :href => '/client/singup' }

    # 空きデータを表示しているかメモ欄のテキストで確認
    assert_match /free1/, @response.body
    assert_match /free2/, @response.body

    # コントローラの変数に設定された空きデータの件数確認
    assert_equal 2, assigns("counseling_sessions").size
    # コントローラの変数に設定された空きデータのステータス確認
    assigns("counseling_sessions").each do |c|
      assert_equal :free, c.status
    end
  end

コントローラの実装はこのとおり

  def index
    list_param = {
      :per_page => 10,
      :order=>'start desc',
      :conditions => ['status_code = ?',
        CounselingSession::StatusToStatusCode[:free]
      ]
    }

    @counseling_session_pages, @counseling_sessions = paginate :counseling_sessions, list_param
  end

ビューはこうです

<h1>カウンセリング予約システム</h1>
<br />
<p>カウンセリング予約システムへようこそ</p>
<ul>
  <li><%= link_to 'ログイン', :controller => 'client', :action => 'login' %></li>
  <li><%= link_to '新規ユーザ登録', :controller => 'client', :action => 'singup' %></li>
</ul>

<p>現在予約可能な時間帯は以下の通りです</p>
<hr />

<div class="indent">
<table class="confirm">
  <tr>
  <th>カウンセラー</th>
  <th><%= human_attribute_name(CounselingSession, 'start') %></th>
  <th><%= human_attribute_name(CounselingSession, 'end') %></th>
  <th><%= human_attribute_name(CounselingSession, 'place') %></th>
  <th><%= human_attribute_name(CounselingSession, 'memo') %></th>
  <th><br></th>
  </tr>

<%- for counseling_session in @counseling_sessions -%>
  <tr>
    <td><%=h counseling_session.counselor_name %></td>
    <td><%=h human_attribute_value(counseling_session, 'start') %></td>
    <td><%=h human_attribute_value(counseling_session, 'end') %></td>
    <td><%=h human_attribute_value(counseling_session, 'place') %></td>
    <td><%=h human_attribute_value(counseling_session, 'memo') %></td>
    <td><%= link_to '予約', :action => 'reserve', :id => counseling_session %></td>
  </tr>
<%- end -%>
</table>

<br />

<%= pagination_links @counseling_session_pages %>
<br />

</div>

なお、jascaffoldのhuman_attribute_nameというヘルパーメソッドを使用する為、ヘルパーモジュールにLocalizeHelperをincludeしています。また、CounselingSessionにcounselor_nameというメソッドを定義しました。

できあがりはこんな感じ。