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件ずつページ単位で表示する)とのからみがあって、これがうまく使えなかったので、別途新しく実装しました。これだけで以下の機能があります。

  1. ログインしているカウンセラーに所属するデータのみ表示
  2. 「開始日付時刻」フィールドの降順で10件づつ表示(前後に移動可能)
  3. 指定した状態のデータのみ表示(表示する状態をクライアントから入力する機能はまだ未実装)

ActiveRecordAPIは、Rubyの特色を生かして柔軟性と簡潔性をうまく両立していると思います。