コメント機能でエラー分が表示されない
投稿に対するコメントのエラー文
railsで投稿アプリを作成しているのですが、投稿に対するコメントのエラー分が出ずに困っています。
ちなみに各バージョンは以下の通り
ruby 2.6.5
rails 6.0.0
viewはこんな感じ
見た目を整えていないため何が何だか分かりにくいですが、投稿に対して(上記viewは投稿コントローラーのshowアクション)コメントを作成すると右のグレーのボックスに表示されるという実装です。
作成自体は実装が完了し、お気づきかとは思うのですが空の文章でも投稿できてしまったためバリデーションでモデルをいじったあと再度確認すると「エラー文ないやん!?」となっています。
分かりやすいように水色のボックスが今回のエラー分が入っているdivタグです。
または、問題・エラーが起きている画像をここにドラッグアンドドロップ
各々記述はこんな感じ
yell(コメント)モデルは以下
class Yell < ApplicationRecord
belongs_to :user
belongs_to :life
validate :body_cannot_blacklist_words
def body_cannot_blacklist_words
blacklist = ['死ね', '馬鹿']
if content.present? && blacklist.any?{ |word| content.include?(word) }
errors.add(:contain_blacklist_words, ": 禁止単語が含まれています。")
end
end
with_options presence: true do
validates :content, length: { maximum: 300 }
end
end
コメントはユーザーとlife(投稿)モデルに紐付けています。
body_cannot_blacklist_wordsでは特定のワードの保存を禁止しておりデータベースにもちゃんと弾かれていたためここは今のところ問題ないかと、
投稿のソースは以下
def show
@life = Life.find(params[:id])
@yell = Yell.new
@yells = @life.yells
end
今回実装したいビューが投稿の詳細なのでshowアクションに上記記述をしています。
該当するビューファイルは以下
<div class="lives-comment-box">
<%= form_with model: [@life, @yell], class: 'yell-form', id: "form", local: true do |f| %>
<div class="errors-box">
<%= render 'shared/error_messages', model: f.object %>
</div>
<div class="form-input">
<%= f.text_area :content, class: 'form-yell', placeholder: yellholder, rows:"7", id: "content" %>
</div>
<%= f.submit '送信', class: 'yell-submit', id: "submit" %>
<% end %>
<div class="yell-lists">
<% @yells.each do |yell| %>
<div class="yell-content">
<%= yell.content%>
<div class="yell-created">
<%= time_ago_in_words(yell.created_at) %>前
</div>
</div>
<% end %>
</div>
</div>
上記form_withで投稿とコメントモデルを記述しrenderでエラーメッセージを呼び出しています。
おそらくrenderに渡しているf.objectに問題があるのか?と推測したのですが、form_withに渡している[@life, @yell]に書き換えてもダメでした、、、
もしわかる方いらっしゃればどうぞよろしくお願いいたします。
自分で試したこと
ここに問題・エラーに対して試したことを記載してください。