とんてき

Ruby, Ruby on Railsやその周辺技術を中心に。ときどき趣味のことも。

【Ruby on Rails】バリデーションメッセージが表示されない時の対処法

問題点

フォームから情報を入力し送信する際に、入力情報に不備があればバリデーションメッセージが表示されるはずが、
なぜか急に表示されなくなったので、その時の対処した内容のメモ。
デバッグやらなんやらで解決するまで丸1日はまってしまいました。とほほ

原因

以前はRailsのヘルパーメソッドである「form_for」を使用していました。
しかし、Rails5.1から「form_with」とやらが登場し、それ以前の「form_tag」、「form_for」は非推奨になったらしい。
ということで早速「form_with」に切り替えたのですが、どうやらここに原因があったようです。

解決法

「form_with」は、デフォルトで「remote: true」すなわちAjax通信が行われるように設定されているようで、
Ajax通信を行わないようにするには、以下のように「local: true」を付与する必要があるようです。

# 省略

<%= form_with model: @post, local: true |f| %>

# 省略