何が起きたか
safariでdatetime_localのフォームを使い、値を必須とした状態(requireオプションをつける)で、デフォルト値を設定しているにもかかわらず、submitしようとした時に「有効な値を入れてください」と言われる。
原因
デフォルト値が秒まで入っていると値として認識してくれないことが原因
OK例
"2023-03-09T20:41:00+09:00"
NG例
"2023-03-09T20:41:31+09:00"
解決策
デフォルト値を入れる時に、フォーマット変更して秒は端折るように強制すると問題は起きなくなる。
ただ強引なので他の方法検討した方がいいかもしれない。
気をつけなければと感じたこと
レコードの値をデフォルト値とする場合、datetime_localとかのフォームで飛ばした値は秒以降が端折られるのでこの問題が起きない。
プログラム内で取得した秒を含む日時をそのままレコードに保存した場合は秒まで入るので問題が起きる。
そのほか
chromeでは起きない
firefoxはそもそもdatetime_localに対応していないらしい