controllerにstatus: :unprocessable_entityを追加
post_controller
def update
@post = Post.find_by(id: params[:id])
@post.content = params[:content]
if @post.save
redirect_to("/posts/index")
else
render("posts/edit", status: :unprocessable_entity)
# rails7系でバリデーションエラー文を表示させるには、 ,status: :unprocessable_entityの追記が必要)
end
end
Rails7.0からデフォルトでTurboが導入されており、バリデーションのエラーメッセージを表示させるためにはstatus: :unprocessable_entity
の記述を追加する必要がある。
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>