エラー発生
Railsで投稿フォームを実装していた時にPCでは問題なく動作していたのですが、
なぜかスマホで使おうとするとエラーが出る部分があったので書いておきます。
new.html.erb
<%= form_for @ride, method: :post do |f| %>
<h1>新しいライドを投稿しよう!</h1>
<label>タイトル</label>
<p><%= f.text_field :title %></p>
<label>予定日</label>
<br />
<%= f.datetime_field :sch_datetime %><br />
<br />
<input class="btn btn-primary" type="submit" value="投稿">
<% end %>
config/initializers/time_formats.rb
Time::DATE_FORMATS[:datetime] = '%Y年%m月%d日 %H時%M分'
config/locales/application.rb
class Application < Rails::Application
config.load_defaults 5.2
config.i18n.default_locale = :ja
config.assets.paths << config.root.join("vendor/assets/javascripts")
config.assets.paths << config.root.join("vendor/assets/stylesheets/")
config.action_view.embed_authenticity_token_in_remote_forms = true
config.time_zone = 'Tokyo'
end
最初に記述していたのはこんな感じでdatetime_fieldを使うことで日時をまとめて取得できるようにしていました。
この方法でPCでは全く問題なく動作しているのを確認していたのでこの状態でデプロイしたのですが、
ふとスマホで動作確認しようと思い触ってみると投稿しようとすると日時の部分で
「有効な値を入力してください」とエラーがでて投稿できませんでした。。。
原因はなんだろう?
と考えてみましたがPCで正常に動作しているのでコードのミスではないと推測しました。
スマホとPCで入力する時のフォームも変化しているのでdatetime_field自体に問題がありそうだな〜と
思ったのでdate_fieldとtime_fieldに分けて書いてみることにしました。
new.html.erb
<%= form_for @ride, method: :post do |f| %>
<h1>新しいライドを投稿しよう!</h1>
<label>タイトル</label>
<p><%= f.text_field :title %></p>
<label>予定日</label>
<br />
#ここから
<%= f.date_field :sch_datetime %><br />
<br />
<%= f.time_field :sch_datetime %><br />
#ここまで変更
<br />
<input class="btn btn-primary" type="submit" value="投稿">
<% end %>
この状態で動作確認してみると無事問題なく動作しました!