text_fieldでtime型データの表示


railsのform_forで、text_fieldにtime型のデータを表示させたい時にうまく時間だけを表示できなかったのでその対策です。

環境

Rails 5.2.3

留意点

htmlはhamlで記述しています。

コード

◯◯.html.haml
= form_for @schedule do |f|
 = f.text_field :next_time, placeholder: "クリックしてください", value: "#{@schedule.next_time.strftime('%H:%M')}"

valueを設定してあげればよかったんですね。
next_timeがtime型で保存しているデータになります。
これにstrftime('%H:%M')をつければ万事解決。
ちなみに、このvalueがないと・・・

こうなります。

(補足1)UTC
「UTC」は「協定世界時」のことで、英語だとCoordinated Universal Timeらしいです。
セシウム原子の振動数をもとに導き出す時間で、今の世界で標準時として使っている時間のことらしいですが、ざっくり言えば日本時間から9時間引いた時間のことみたいです。

これを時間だけの表示にしたかったので、先ほどのvalueを設定してあげると・・・

こうなります。
結構単純でしたね。

(補足2)value属性
この問題にぶち当たった時に改めてvalue属性ってなんぞや?となったので記載しておきます。
HTML5入門より

input要素のvalue属性は、input要素の値を指定する属性。テキスト入力欄などにおいては初期入力値、チェックボックスやラジオボタンにおいては選択した時にだけ送信する値、送信ボタンなどにおいてはボタン名を表す。

なるほど、テキスト入力では初期値ですか。
そう考えればスッキリします。