上記の最新ステータス取得方法を使って、ユーザ一覧を作ります。登録されている全てのユーザを一覧表示してみます(本当は上限を決めてページで分割しないと、ユーザが増えたら大変なことになりますが、後回し。)
まず、Userコントローラに以下の list メソッドを追加します。といってもログインチェックのみ。
def list redirect_to(:controller => :account, :action => :login) if !logged_in? end
肝心の処理は全てビュー側でやります。app/views/user/list.rhtml を新規に作成し、以下のように記述。
<div id="whole"> <hr> <% User.find(:all).each do |u| %> <%= image_tag('person.png', :size => "64x64", :style => "margin: 2px;", :align => 'left') %> <strong><%= link_to(h(u.login), {:action => 'index', :id => u.login}) %></strong><br> <%= s = u.new_status && Status.find_by_id(u.new_status); s ? h(s.status) : "" %> <hr style="clear:both"> <% end %> </div>
全てのUserについてループを回して、ログイン名やステータスを表示しています。ログイン名にはlink_toで各ユーザの情報ページにリンクを張っています。ただし、発言がない場合など、new_statusがnilの場合は何も表示しないようにします。なお、h というのは、html_escapeの略で、HTMLをエスケープしてくれるヘルパーメソッドです。