【Rails】バリデーションエラー後にレイアウトが崩れるのを防ぐ

現象

フォームのバリデーションエラーで入力画面に戻った時になぜかレイアウトが崩れてしまう。

原因

エラーが出ると、そのエラーが出ている部分の要素がdivで囲まれてしまうからなんだそうな。

<div class="field_with_errors">フィールド</div>

エラーが出ると勝手にこのdivが出現する。

回避方法

config/application.rbに下記を追記。divが勝手に生成されなくなって、レイアウト崩れも起こらなくなった。

config.action_view.field_error_proc = Proc.new do |html_tag, instance| 
  html_tag
end

追記しただけでは変化が見られない場合はサーバーの再起動をしよう!


参考文献

Railsのバリデーションエラー後にレイアウトが崩れるとき | Workabroad.jp