rails学習始めて1週間の初心者です。
本のタイトルと感想を投稿するアプリケーションを作成しています。
一覧画面と投稿画面を同じページに表示させたいのですが下記エラーで表示できません。
発生している問題・エラーメッセージ
エラーメッセージ
ActionController::ParameterMissing in BooksController#create
param is missing or the value is empty: book
Extracted source (around line #38): private def book_params params.require(:book).permit(:title,:body) end end
対象のcontroller
class BooksController < ApplicationController def new @book=Book.new end def create @book=Book.new(book_params) @book.save redirect_to "/books/#{@book.id}}" end def index @books=Book.all end def show @book=Book.find(params[:id]) end def edit @book=Book.find(params[:id]) end def update book=Book.find(params[:id]) book.update(book_params) redirect_to "/books/#{book.id}" end def destroy book=Book.find(params[:id]) book.destroy redirect_to "/books" end #エラー箇所ここから private def book_params params.require(:book).permit(:title,:body) end #ここまで end
###対象のindex.html.erb
<h1>Books</h1> <table> <thead> <tr> <th>Title</th> <th>Body</th> <th colspan="3"></th> </tr> </thead> <% @books.each do |book|%> <tbody> <tr> <td><%= book.title %></td> <td><%= book.body %></td> <td><%= link_to"Show","/books/#{book.id}" %></td> <td><%= link_to"Edit","/books/#{book.id}/edit" %></td> <td><%= link_to"Destroy","/books/#{book.id}",method: :delete,"data-confirm"=>"Are you sure?" %></td> </tr> </tbody> <% end %> </table> <h2>New book</h2> <%= form_with model:@book,local:true do |f|%> <label for="title">Title</label> <div class="form"> <%= f.text_field:title %> </div> <label for="body">Body</label> <div class="form"> <%= f.text_area:body %> </div> <div class="action"> <%=f.submit "Create Book"%> </div> <% end %>
試したこと
routesはresourcesを使用しています。
エラー内容に従いrequire(:book)を削除すると投稿はできるのですが
代わりに編集が反映されなくなってしまいます。
また、試しにnew.html.erbを作成し
index.html.erb内の<h2>New book</h2>以下をコピペしてみると
上記エラーは発生せず投稿することができました。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2021/11/13 11:43