ユーザ一覧の表示

上記の最新ステータス取得方法を使って、ユーザ一覧を作ります。登録されている全てのユーザを一覧表示してみます(本当は上限を決めてページで分割しないと、ユーザが増えたら大変なことになりますが、後回し。)

まず、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をエスケープしてくれるヘルパーメソッドです。