前提
date型のカラムをvalueの引数に渡すと、to_sされて"2021-09-06"になる。
datetime型のカラムはActiveSupport::TimeWithZoneなので、valueの引数に渡すと、to_sされて"2021-09-06 00:16:12 +0900"になる。
date_field
カラムがdateのとき
|
|
内部的にto_sされて、user.birthday.strftime('%Y-%m-%d')と同じになる。
|
|
カラムがdatetimeのとき
|
|
デフォルトだとvalue="2021-09-06 00:16:12 +0900"になるので、フォームは日付として見なしてくれない。なので、to_dateで日付に変換する。

datetime_field
typeがdatetime-localになるので、date, datetimeどちらの場合もstrftime('%Y-%m-%dT%T')で"2021-09-06T00:16:12"の形する必要がある(Tは文字列)。
|
|
|
|

- datetime_field | Railsドキュメント
- <input type="datetime\-local"> - HTML: HyperText Markup Language | MDN
- HTML で使われる日付や時刻の形式 - HTML: HyperText Markup Language | MDN
time_field
time_fieldでは、時:分:秒、時:分どちらでもいい。
time 入力欄を含むフォームが送信されると、フォームのデータに含められる前に値がエンコードされます。 time 入力欄のフォームのデータ項目は、常に
name=hh%3Ammの形式か、秒が含まれる場合はname=hh%3Amm%3assの形式になります。
<input type="time"> - HTML: HyperText Markup Language | MDN
|
|
|
|

|
|
|
|
