2016-08-22 3 views
1

プロセステーブルにdatetime型のフィールドstart_timeがあります。初期値はTime.zone.nowに設定されています。その後、ユーザーは日付を変更することはできません。そのstart_timeフィールドの時間と分だけを変更することができます。Rails:日時フィールドの時と分のみを更新する

したがって、「22:43」のように時:分だけを表示する編集フォームがユーザーに提供されますが、フォームが送信されると、フィールド値が現在の日付と時刻に変更されます。コントローラでは、私は値を更新するために、標準のレール文を使用しました:のparamsで

@process = Process.find(params[:id]) 
@process.update(process_params) 

「20:40」

はまたchange方法を試してみましたが、それは保存しないように私はSTART_TIMEを取得します代わりにロールバックします。

hour_minute = params[:process][:start_time].split(":") 
@process.start_time.change({hour: hour_minute[0], min: hour_minute[1]}) 

フィールド日付の時と分だけを更新する必要があります。

答えて

2

changeメソッドは、変更された時間または日付を返しますが、アクティブなレコード自体を更新しませんでした。

これは更新することができます。

hour_minute = params[:process][:start_time].split(":") 
@process.update(start_time: @process.start_time.change(hour: hour_minute[0], min: hour_minute[1])) 

希望すると、これが役に立ちます。

関連する問題