railsのフォームヘルパーの
タイムセレクトで時間だけを入力できなくてハマりました。
時間が選択できます。
= f.time_select :hoge_at, prompt:true
データはtime型で入力です。 こちらを使って時間だけを投稿させたい!!!!
??????????????
何言ってんだ?こいつ!!ってなりますよね。実はこのフォーム時間を投稿するフォームなのに勝手に年月日を投稿するんですよ。
空で投稿時のパラメータ
"hoge_at(1i)"=>"1", "hoge_at(2i)"=>"1", "hoge_at(3i)"=>"1", "hoge_at(4i)"=>"", "hoge_at(5i)"=>"",
(1i)は年、(2i)は月、(3i)は日、(4i)は時、(5i)は分をそれぞれ入力しています。time_selectの仕様で勝手に年月日が1で入力されています。 これが起きることで空投稿のバリデーションを組んでもバリデーションにかかりません。年月日のデータが入力されているので。
ここで教えてもらって使ったオプションのが
ignore_data:true
これをつけて
= f.time_select :hoge_at, prompt:true, ignore_data:true
空で投稿すると
"created_at(4i)"=>"", "created_at(5i)"=>""
(1i),(2i),(3i)が消えている!!ってことで空で入力すると空として認識され バリデーションにかかるようになりました。 時と分の値を入力した場合でも年月日は消えています。