【Rails】errors.full_messages が表示されない
Q&A
Closed
解決したいこと
現在、Rails勉強中の初心者です;;
Ruby on RailsでTwetterのようなWebアプリを作っています。
バリデーションに失敗した際に、自動的にエラーメッセージを出したいのですが、うまくいきません...。どなたか助けていただけると助かりますorz
発生している問題・エラー
バリデーションに失敗した際に、自動的にエラーメッセージを出したいが、出てこない。
該当するソースコード
既に投稿されたものを編集する際に、内容を空または140字以上にして保存しようとした際に、自動的にエラーメッセージを出したいのです。
以下のようにコードを書き、
・内容を空または140字以上にして保存しようとした際に保存されない
・内容を空または140字以上にして保存しようとした際に編集画面にrenderされる
ことは確認できたのですが、エラーメッセージの表示がされません。
routes.rb
post "posts/:id/update" => "posts#update"
post.rb
class Post < ApplicationRecord
validates :content, {presence: true, length: {maximum: 140}}
end
posts.controller.rb
def update
@post = Post.find_by(id: params[:id])
@post.content = params[:content]
if @post.save
redirect_to("/posts/index")
else
render("posts/edit")
end
end
edit.html.erb
<div class="main posts-new">
<div class="container">
<h1 class="form-heading">編集する</h1>
<%= form_tag("/posts/#{@post.id}/update") do %>
<div class="form">
<div class="form-body">
<% @post.errors.full_messages.each do |message| %>
<div class="form-error">
<%= message %>
</div>
<% end %>
<textarea name="content"><%= @post.content %></textarea>
<input type="submit" value="保存">
</div>
</div>
<% end %>
</div>
</div>
GitHubはこちらです。
https://github.com/milky-airi/tweet_app
お手数おかけしますが、どなたかご教示いただけますと幸いです;;
Rails 7.0.5
ruby 3.1.2p20
0