前提・実現したいこと
ここに質問の内容を詳しく書いてください。
(例)ruby on railsで本の感想を追加できるようなシステムを作っています。
バリデーションの機能を実装中に以下のエラーメッセージが発生しました。
発生している問題・エラーメッセージ
該当のソースコード
routes
1 2Rails.application.routes.draw do 3 # For details on the DSL available within this file, see http://guides.rubyonrails.org/routing.html 4 get '' => 'homes#top' 5 get 'books' => 'books#index' 6 post 'books' => 'books#create' 7 get 'books/:id' => 'books#show', as: 'book' 8 get 'books/:id/edit' => 'books#edit', as: 'edit_book' 9 10 patch 'books/:id' => 'books#update', as: 'update_book' 11 get 'books/:id/update' => 'books#update' 12 delete 'books/:id' => 'books#destroy', as: 'destroy_book' 13 14end
modelBook
1class Book < ApplicationRecord 2 validates :title, presence: true 3 validates :body, presence: true 4end
booksController
1class BooksController < ApplicationController 2 3 def new 4 5 end 6 7 def index 8 @books = Book.all 9 @book = Book.new 10 end 11 12 def show 13 @book = Book.find(params[:id]) 14 end 15 16 def edit 17 @book = Book.find(params[:id]) 18 end 19 20 21 22 def destroy 23 book = Book.find(params[:id]) 24 book.destroy 25 flash[:success] = "Book was successfully destroyed." 26 redirect_to books_path 27 end 28 29 30 31 def create 32 33 34 35 book = Book.new(book_params) 36 if book.save 37 flash[:success] = "Book was successfully created." 38 redirect_to "/books/#{book.id}" 39 else 40 # flash.now[:danger] = "Failed to save." 41 #render "/books" 42 render :index 43 end 44 end 45 46 47 48 49 50 def update 51 book = Book.find(params[:id]) 52 53 54 if book.update(book_params) 55 flash[:success] = "Book was successfully updated." 56 redirect_to "/books/#{book.id}" 57 else 58 flash.now[:danger] = "Failed to update." 59 render "/books" 60 end 61 end 62 63 64 65 private 66 67 def book_params 68 params.require(:book).permit(:title, :body) 69 end 70 71end 72
index
1 2 3 4 <div class="notifications"> 5 <% flash.each do |message_type, message| %> 6 <%= message %> 7 <% end %> 8 </div> 9 10 11 <h1>Books</h1> 12 13 <!-- 一覧表示 --> 14 <table style="table-layout: fixed;"> 15 16 <tr> 17 <th>Title</th> 18 <th>Body</th> 19 <th colspan="3"></th> 20 </tr> 21 22 23 <% @books.each do |book| %> 24 <tr> 25 <td><%= book.title %></td> 26 <td><%= book.body %></td> 27 <!--<td><a class="show" href="/books/">Show</a></td>--> 28 <td><%= link_to "Show", "/books/#{book.id}" %></td> 29 <td><%= link_to "Edit", "/books/#{book.id}/edit" %></td> 30 <td><%= link_to "Destroy", destroy_book_path(book.id), method: :delete, "data-confirm" => "Are you sure?" %></td> 31 </tr> 32 <% end %> 33 </table> 34 35 36 <% if @book.errors.any? %> 37 <%= @book.errors.count %>件のエラーが発生しました 38 <% @book.errors.full_messages.each do |message| %> 39 <%= message %> 40 <% end %> 41 <% end %> 42 43 <!-- 新規投稿 --> 44 <%= form_with model:@book, url:'/books', local:true do |f| %> 45 <div class="new-book"> 46 <h2>New book</h2> 47 <p>Title</p> 48 <%= f.text_field :title %> 49 <p>Body</p> 50 <%= f.text_area :body %> 51 <div> 52 <%= f.submit 'Create Book' %> 53 </div> 54 </div> 55 <% end %> 56
試したこと
プログラムを目で追ってみましたが、わかりません。
@booksがnilになっていてエラーをはいてると思うのですが、参考にさせていただいた他の方は出ていないように思います。
参考資料
https://qiita.com/clbcl226/items/af336ff06bfba4dacfd9
補足情報(FW/ツールのバージョンなど)
AWS
windows
rails -v 5.2.5
回答1件
あなたの回答
tips
プレビュー