前提・実現したいこと
Railsで一覧表示と新規作成を同じページにおいています。
バリデーションの空でないことを検証するpresence: trueのエラーメッセージを表示したいのですがエラーが出ます。バリデーションに引っかない新規作成はエラーが出ません。
プログラミングの勉強をして1週間位です。
発生している問題・エラーメッセージ
NoMethodError in Books#create undefined method `each' for nil:NilClass Extracted source (around line #7): 5 <th>Body</th> 6</tr> 7<% @books.each do |book| %> <tr> <td><%= book.title %></td> <td><%= book.body %></td>
該当のソースコード
html
1<h2>Books</h2> 2<table> 3<tr> 4 <th>Title</th> 5 <th>Body</th> 6</tr> 7<% @books.each do |book| %> 8 <tr> 9 <td><%= book.title %></td> 10 <td><%= book.body %></td> 11 <td><%= link_to 'Show',book_path(book)%></td> 12 <td><%= link_to 'Edit',edit_book_path(book)%></td> 13 <td><%= link_to 'Destroy',book_path(book),method: :delete,data:{confirm: "Are you sure?"} %></td> 14 </tr> 15<% end %> 16 17</table> 18 19<h2>New book</h2> 20<%= form_for @book do |f|%> 21 22 <div class="field"> 23 <%= f.label :title%><br> 24 <%= f.text_field :title%> 25 </div> 26 <div class="field"> 27 <%= f.label :body%><br> 28 <%= f.text_area :body%> 29 <div> 30 <%= f.submit 'Create Book'%> 31<% end %>
ruby
1 def index 2 @books = Book.all.order(id: :asc) 3 @book = Book.new 4 end 5 6 def create 7 book = Book.new(book_params) 8 if book.save 9 redirect_to books_path,notice: 'Book was successfully created.' 10 else 11 render :index 12 end 13 end
補足情報(FW/ツールのバージョンなど)
Rails 5.2.4.3
ruby 2.5.7
プログラミング勉強をして1週間位です。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/08/04 22:10