クライアントは、特定の日に 3 つの異なる時間枠でイベントをスケジュールするだけなので、イベント コントローラーにクイック追加アクションがあります。日付と時刻はデフォルトのフォームで問題なく機能していますが、値を手動で設定しようとすると問題が発生します。
def quick_add #params are date like 2012-04-29, timeslot is a string
timeslot = params[:timeslot].to_sym
date = params[:date].to_date
@workout = Workout.new do |w|
w.name = 'Workout!'
w.date = date
case timeslot
when :morning
w.time = Time.local(w.date.year, w.date.month, w.date.day, 6)
when :noon
w.time = Time.local(w.date.year, w.date.month, w.date.day, 12)
when :evening
w.time = Time.local(w.date.year, w.date.month, w.date.day, 18, 15)
else
w.time = Time.now
end
end
イベントが作成されています。日付は正しいですが、時間は次のとおりです。
Morning: 2000-01-01 10:00:00 UTC
Expected: 2012-05-02 06:00:00 UTC -400
Noon: 2000-01-01 16:00:00 UTC
Expected: 2012-05-02 12:00:00 UTC -400
Evening: 2000-01-01 22:15:00 UTC
Expected: 2012-05-02 18:15:00 UTC -400
Rails コンソールでコマンドを実行すると、期待どおりの結果が得られるようです。