【概要】
1.結論
2.どのように記載するか
3.ここから学んだこと
1.結論
(任意の変数).toISOString().slice(0, -8)を使用する
2.どのように記載するか
前提として、
<%= f.datetime_field :study_date ,id:"datetime_field"%>
で設定しています。
datetime_fieldメソッドは
=***.toISOString().slice(0, -8);をすることにより、
今日の年、月、時間、分までをデフォルトに表記することができます。
<script>
var today_time = new Date();
now.setMinutes(today_time.getMinutes() - now.getTimezoneOffset()); #----❶
document.getElementById('datetime_field').value = today_time.toISOString().slice(0, -8); #----❷
</script>
と記載しました。
html.erbに記述しておりますので"script"で囲み、更新するとconsoleで変数の定義がされているとエラーがでたのでvarにしています。❶❷までについては下記のURLで触れられている通り表示される時刻はUTC表記(❷)になるので、前もってUTCの差分(❶)に合わせています。
参考にしたURL:
HTML5 に現在時刻を設定するには
3.ここから学んだこと
自分は最初に
<f.date_field :****, value:Time.now.strftime("%Y-%m-%d")>
を使用していました。value:Time.now.strftime("%Y-%m-%d")を入れてあげるとページが表示された段階で現在の日付が自動で入力されます。
かなり参考にしたURL:
Railsのdate_fieldにてデフォルト値を設定する
しかし、f.datetime_fieldの場合は、valueに上記のものを入れたり、Time.nowにすると
The specified value "2020 9/16 12:05" does not conform to the required format. The format is "yyyy-MM-ddThh:mm" followed by optional ":ss" or ":ss.SSS".
と出てしまいました。
基準通りの記述を満たせていないということで、認識されていないということでした。なので上記の方法で行いましたが、slice(0,-1)をあまり理解できていないことに気づきました。slice(start,end)はstartから始まる文字~endの手前の数分だけを取り出すので、上記のように書くことで”ss.SSS(秒以下の時間)”を省くことができました。
参考にしたURL:
sliceメソッド