jascaffoldの調整
その後、jascaffoldを調整して、一覧表示は以下のようになりました。
まだ、ビュー(テンプレート)には手を入れていません。
変更したのは、まず、jascaffoldの設定ファイルで、生成されたものに日本語の名前を入れていきました。
# (config/localize.yml) # Model の日本語名 model: counseling_session : カウンセリングセッション # db/localized/counseling_sessions.yml column_names: id : Id counselor_id : Counselor client_id : Client status_code : 状態 start : 開始 end : 終了 place : 場所 memo : メモ ....
それから、日付の表示方法はここで調整できました。
# db/localized/counseling_sessions.yml(続き) property_start: :time_format : '%Y-%m-%d %H:%M' :options : :include_blank : true :use_month_numbers : true # :start_year : 2000 property_end: :time_format : '%H:%M' :options : :include_blank : true :use_month_numbers : true # :start_year : 2000
それから、ReservationControllerの list メソッド
def list status = :all # 後にフォームで指定する予定 param = { :per_page => 10, :order=>'start desc', } if status == :all param[:conditions] = ['counselor_id = ?', current_user.id ] else param[:conditions] = ['counselor_id = ? and status_code = ?', current_user.id, CounselingSession::StatusToStatusCode[status] ] end @counseling_session_pages, @counseling_sessions = paginate :counseling_sessions, param end
ここは、昨日作成した User#list_sessions というメソッドを使う予定でしたが、ページ処理(10件ずつページ単位で表示する)とのからみがあって、これがうまく使えなかったので、別途新しく実装しました。これだけで以下の機能があります。
- ログインしているカウンセラーに所属するデータのみ表示
- 「開始日付時刻」フィールドの降順で10件づつ表示(前後に移動可能)
- 指定した状態のデータのみ表示(表示する状態をクライアントから入力する機能はまだ未実装)
ActiveRecordのAPIは、Rubyの特色を生かして柔軟性と簡潔性をうまく両立していると思います。