記憶の外付けHDD

切実に頭にUSBのコネクターがほしいです。なるべくtype-cでお願いしたいです。(忘れないように、プログラミング学習で学んだことを投稿してます)

2019/08/23 'field_with_errors'

学習記録(2019/08/23)

起こったこと

グループでチャットができるアプリを実装中にこんなことが起こりました。

前提

  • メッセージの送信機能を実装中
  • フロント実装には「rails」、入力フォームにはform_forを使用
  • Modelには、空欄での投稿ができないように、validation presence: trueを設定
  • validationでメッセージが保存できないときは、入力画面render :indexに戻るように設定

事象

検証のため、「空欄で投稿する」 → 「renderでindexに戻る」 を確認したところ、入力欄のレイアウトがおかしくなった。

↓実際の画面↓

これが... b5e195cc.png

こうなった!

dac34ccb.png

状況確認

render後のhtmlに<div>が追加されてました。   (勝手に変えるときは、教えてよー)

↓実際の画面↓ スクリーンショット 2019-08-23 22.07.40.jpg

解決方法

configにあるapplication.rbに以下を追加しました。

class Application < Rails::Application
(中略)
  config.action_view.field_error_proc = Proc.new do |html_tag, instance|
    %Q(#{html_tag}).html_safe
  end
end
  • なぜ'field_with_errors'が追加されるか?
  • 'Proc'って一体なんのか?

といった点は、後日調査したいと思います。

参考

(参考にさせていただきました!ありがとうございます!) - Rails、form_forが勝手に吐き出す\

を制御する - naichi's lab - Active Record バリデーション - Rails ガイド