前提
プログラミング初心者な為専門用語等わからないことが多くあります
調べながらの対応になる為返答が遅くなる場合があります。
誤字、脱字等もあるかと思いますがご指摘ください。
実現したいこと
本の感想を投稿するサイトを作成し、バリデーションを実装。
バリデーションはcreate、updateが失敗したときにエラーメッセージも表示させる
発生している問題・エラーメッセージ
エラーメッセージは表示されず、それぞれのリダイレクト先にリダイレクトされる
該当のソースコード
index.html.erb
1<h1>books</h1> 2 <table> 3 <thead> 4 <tr> 5 <th>title</th> 6 <th>body</th> 7 <th></th> 8 </tr> 9 </thead> 10 <tbody> 11 <% @books.each do |book| %> 12 <tr> 13 <td><%= book.title %></td> 14 <td><%= book.body %></td> 15 <td><%= link_to "show",book_path(book.id) %></td> 16 <td><%= link_to "edit",edit_book_path(book.id) %></td> 17 <td><%= link_to "destroy",book_path(book.id), method: :delete,"data-confirm" => "Are you sure?" %></td> 18 </tr> 19 <% end %> 20 </tbody> 21 </table> 22 23 <h3>New Books</h3> 24 <% if @book.errors.any? %> 25 <%= @book.errors.count %>errors prohibited this book from being saved 26 <ul> 27 <% @book.errors.full_messages.each do |message| %> 28 <li><%= message %></li> 29 <% end %> 30 </ul> 31 <% end %> 32 33<%= form_with model: @book do |f| %> 34 35 <h4>title</h4> 36 <%= f.text_field :title %> 37 38 <h4>body</h4> 39 <%= f.text_area :body %> 40 41 <%= f.submit'Create Book' %> 42<% end %>
edit.html.erb
1<p id="notice"><%= notice %></p> 2 <h1>Editing Book</h1> 3 <% if @book.errors.any? %> 4 <%= @book.errors.count %>error prohibited this book from being saved 5 <ul> 6 <% @book.errors.full_messages.each do |message| %> 7 <li><%= message %></li> 8 <% end %> 9 </ul> 10 <% end %> 11 12<%= form_with model: @book, url: update_book_path(@book.id), method: :patch do |f| %> 13 14 <h4>Title</h4> 15 <%= f.text_field :title %> 16 17 <h4>Body</h4> 18 <%= f.text_area :body %> 19 <h4></h4> 20 <%= f.submit'Update Book' %> 21<% end %> 22 23 <span> 24 <%= link_to "show",book_path(@book.id) %> 25 </span> 26 <span>|</span> 27 <span> 28 <%= link_to "back","/books" %> 29 </span>
books.cotroller.erb
1class BooksController < ApplicationController 2 def new 3 end 4 5 def index 6 @book = Book.new 7 @books = Book.all 8 end 9 def create 10 book = Book.new(book_params) 11 if book.save 12 flash[:notice] = "Book was successfully created." 13 redirect_to book_path(book.id)#, notice: "You have created book successfully." 14 else 15 @book = Book.new 16 @books = Book.all 17 render :index 18 end 19 end 20 def show 21 @book = Book.find(params[:id]) 22 end 23 24 def edit 25 @book = Book.find(params[:id]) 26 end 27 def update 28 book =Book.find(params[:id]) 29 if book.update(book_params) 30 flash[:notice] = "Book was successfully updated." 31 redirect_to book_path(book.id) 32 else 33 @book = Book.find(params[:id]) 34 render :edit 35 end 36 end 37 38 def destroy 39 book = Book.find(params[:id]) 40 book.destroy 41 redirect_to '/books' 42 end 43 44 private 45 def book_params 46 params.require(:book).permit(:title, :body) 47 end 48end 49
試したこと
特にないです。
これを実施してみたら?等あればご教授いただけると幸いです。
補足情報(FW/ツールのバージョンなど)
ruby 3.1.2p20
Rails 6.1.7
cloud9
railsに関して知識不足を痛感しているので自分自身の勉強の為にも
なにが悪くてこういう理由でこう処置する等ご教授いただけると幸いです。

回答2件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
また依頼した内容が修正された場合は、修正依頼を取り消すようにしましょう。
2023/01/07 02:30
2023/01/07 03:32
2023/01/08 01:33
2023/01/08 02:06