jascaffoldの導入
では、CounselingSessionの一覧、登録、修正、削除の機能を作りますので、jascaffoldを導入します。参考サイトは以下の通り。
ここから、jascaffold-20051228.tar.gzをダウンロードして、vendor/pluginsに展開します。
そして、次のコマンドを実行します。
$ script/generate jascaffold counseling_session reservation [~/coreserve] 06-06-01 木 10:31 exists app/controllers/ exists app/helpers/ create app/views/reservation exists test/functional/ dependency model exists app/models/ exists test/unit/ exists test/fixtures/ skip app/models/counseling_session.rb skip test/unit/counseling_session_test.rb skip test/fixtures/counseling_sessions.yml create app/views/reservation/_form.rhtml create app/views/reservation/list.rhtml create app/views/reservation/show.rhtml create app/views/reservation/new.rhtml create app/views/reservation/edit.rhtml create app/views/reservation/confirm_create.rhtml create app/views/reservation/confirm_update.rhtml create app/views/reservation/confirm_destroy.rhtml create app/controllers/reservation_controller.rb create test/functional/reservation_controller_test.rb create app/helpers/reservation_helper.rb create app/views/layouts/reservation.rhtml create public/stylesheets/scaffold.css create app/helpers/localize_helper.rb create config/localize.yml create db/localized create db/localized/counseling_sessions.yml create app/views/models/counseling_sessions create app/views/models/counseling_sessions/_show1.rhtml create app/views/models/counseling_sessions/_show2.rhtml create app/views/models/counseling_sessions/_edit1.rhtml create app/views/models/counseling_sessions/_edit2.rhtml create app/views/models/counseling_sessions/_hidden.rhtml create app/views/common create app/views/common/_notice.rhtml create app/views/common/_error.rhtml
script/serverを起動して動作確認してみると、しっかり、一覧、参照、編集、削除ができました。当然ながら、counselor_idとclient_idは設定されていません(リレーション関連の操作はできません)が、scaffold(足場)としては充分以上です。jascaffoldバンザイヽ( ・∀・)ノ!
生成した、ReservationControllerに以下の修正をしてみました。
class ReservationController < ApplicationController before_filter :login_required # ← ログインを必須にする .... def new @counseling_session = CounselingSession.new @counseling_session.start = Time.now # ← 初期値設定 @counseling_session.end = Time.now + 60.minutes # ← 初期値設定 end .... def create # 生成されたロジック # @counseling_session = CounselingSession.new(params[:counseling_session]) # 変更したロジック p = params[:counseling_session] start = Time.parse(p[:start]) end_ = Time.parse(p[:end]) @counseling_session = current_user.create_session(start, (end_ - start)/60) do |c| c.place = p[:place] if p[:place] c.memo = p[:memo] if p[:memo] end .... end end
わずか10行の修正で以下のことができました。
- ログインしないとこのページにアクセスできない
- ゲストがこのURLにアクセスすると、ログインを促しログイン後に自動的にここに戻る
- 新規作成の時、「開始時刻」の初期値として、空白でなく現在時刻を設定する(終了時刻は60分後)
- ログインしているカウンセラーに所属するセッションを作成する(counselor_idが正しく設定される)
なんか、物凄い勢いでシステムが出来て行くので、わかってはいてもやっぱり驚きです。