学習記録(2019/08/23)
起こったこと
グループでチャットができるアプリを実装中にこんなことが起こりました。
前提
- メッセージの送信機能を実装中
- フロント実装には「rails」、入力フォームには
form_for
を使用 - Modelには、空欄での投稿ができないように、validation
presence: true
を設定 - validationでメッセージが保存できないときは、入力画面
render :index
に戻るように設定
事象
検証のため、「空欄で投稿する」 → 「renderでindexに戻る」 を確認したところ、入力欄のレイアウトがおかしくなった。
↓実際の画面↓
こうなった!
状況確認
render後のhtmlに<div>
が追加されてました。
(勝手に変えるときは、教えてよー)
解決方法
configにあるapplication.rbに以下を追加しました。
ruby.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'って一体なんのか?
といった点は、後日調査したいと思います。
参考
(参考にさせていただきました!ありがとうございます!)