バリデーションを作成している最中なのですが、NoMethodErrorの原因がわかりません。
shutaコントローラです↓
Rails
1class ShutaController < ApplicationController 2 def new 3 @book = Book.new 4 end 5 6 7 def index 8 @books = Book.all 9 end 10 11 def show 12 @book = Book.find(params[:id]) 13 end 14 15 def create 16 @book = Book.new(book_params) 17 if @book.save 18 redirect_to shutax_path(@book.id) 19 flash[:notice] = "Book was successfully created" 20 else 21 render :new 22 end 23 end 24 25 def edit 26 @book = Book.find(params[:id]) 27 end 28 29 def update 30 book = Book.find(params[:id]) 31 book.update(book_params) 32 redirect_to shutax_path(book.id) 33 flash[:notice] = "Book was successfully updated" 34 end 35 36 def destroy 37 book = Book.find(params[:id]) 38 book.destroy 39 redirect_to index_path 40 end 41 42 43 44 private 45 46 def book_params 47 params.permit(:title, :body) 48 end 49 50end 51
index.html.erbのコードです↓
<h1>Books</h1> <table class="table"> <thead> <tr> <th>Title</th> <th>Body</th> <th colspan="3"></th> </tr> </thead> <tbody> <% @books.each do |book| %> <tr> <td> <%= book.title %> </td> <td> <%= book.body %> </td> <td> <%= link_to "Show", shutax_path(book.id) %> <%= link_to "Edit", edit_shutax_path(book.id) %> <%= link_to "Destroy", destroy_shutax_path(book.id), method: :delete %> </td> </tr> <% end %> </tbody> </table> <h1>New book</h1> <% if @book.errors.any? %> <%= @book.errors.count %>件のエラーが発生しました <% @book.errors.full_messages.each do |message| %> <%= message %> <% end %> <% end %> <%= form_with model: @book, url:'/books', local:true do |f| %> <h4>Title</h4> <%= f.text_field :title %> <h4>Body</h4> <%= f.text_area :body %> <%= f.submit 'Create Book' %> <% end %>
エラーの内容です↓
shutaコントローラのindexアクションに問題があるのは分かるのですが、@booksや@bookに変更してみてもエラーが消えません。
なにが原因なのか、ご教授お願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/12/14 21:56
2021/12/14 22:41