初期画面(ゲスト向け)一応完成
初期画面のゲスト用のテストは、このようになりました。
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というメソッドを定義しました。
できあがりはこんな感じ。