前提
初めての投稿のため、至らぬ記述等ありましたらご教授願います。
現在、「Bookers」というアプリケーションを作成しています。
本のタイトルとその本の内容を「投稿」「編集」「削除」の機能を持ったものです。
その他、必要に応じて別途投稿と一覧画面を行き来します。
ご教授願いたいこと
・Rspec で発生した5つのエラーの対応策
・エラー内容の簡単な詳細
発生している問題・エラーメッセージ
・「rails s」を実行、ブラウザ上では各項目の挙動・動作、レイアウトは問題なく表示されている
・Rspec の際に以下の5つのエラーが発生した
ーー1つ目ーー Books GET /update returns http success Failure/Error: @book = Book.find(params[:id]) ActiveRecord::RecordNotFound: Couldn't find Book with 'id'=update ーー2つ目ーー Books GET /destroy returns http success Failure/Error: @book = Book.find(params[:id]) ActiveRecord::RecordNotFound: Couldn't find Book with 'id'=destroy ーー3つ目ーー Homes GET /top returns http success Failure/Error: get "/homes/top" ActionController::RoutingError: No route matches [GET] "/homes/top" ーー4つ目ーー 投稿のテスト 一覧画面のテスト book削除のテスト application.html.erbにjavascript_pack_tagを含んでいるか Failure/Error: expect(is_exist).to eq(1) expected: 1 got: 0 (compared using ==) ーー5つ目ーー 投稿のテスト 詳細画面のテスト リンクの遷移先の確認 Backの遷移先は一覧画 Failure/Error: expect(page).to have_current_path books_path expected "/books.1" to equal "/books" ーーーーーーー Failed examples: rspec ./spec/requests/books_spec.rb:5 # Books GET /update returns http success rspec ./spec/requests/books_spec.rb:12 # Books GET /destroy returns http success rspec ./spec/requests/homes_spec.rb:5 # Homes GET /top returns http success rspec ./spec/system/books_spec.rb:75 # 投稿のテスト 一覧画面のテスト book削除のテストapplication.html.erbにjavascript_pack_tagを含んでいるか rspec ./spec/system/books_spec.rb:119 # 投稿のテスト 詳細画面のテスト リンクの遷移先の確認 Backの遷移先は一覧画面か
該当のソースコード
books_controller.rb
1class BooksController < ApplicationController 2 def new 3 @book = Book.new 4 end 5 6 def create 7 @book = Book.new(book_params) 8 if @book.save 9 redirect_to book_path(@book.id), notice: 'Book was successfully created.' 10 else 11 @books = Book.all 12 render :index 13 end 14 end 15 16 def index 17 @books = Book.all 18 @book = Book.new 19 end 20 21 def show 22 @book = Book.find(params[:id]) 23 end 24 25 def edit 26 @book = Book.find(params[:id]) 27 end 28 29 def update 30 31 @book = Book.find(params[:id]) 32 if @book.update(book_params) 33 redirect_to book_path(@book.id), notice: 'Book was successfully updated.' 34 else 35 render :edit 36 end 37 end 38 39 def destroy 40 book = Book.find(params[:id]) 41 book.destroy 42 redirect_to books_path, alert: 'Book was successfully destroyed.' 43 end 44 45 private 46 # ストロングパラメータ 47 def book_params 48 params.require(:book).permit(:title, :body) 49 end 50end
routes.rb
1Rails.application.routes.draw do 2 root :to => 'homes#top' 3 resources :books 4end
index
1<body> 2 <% if flash[:alert] %> 3 <p class="notice"><%= alert %></p> 4 <% end %> 5 6 <h1>Books</h1> 7 8 <table> 9 <thead> 10 <tr> 11 <th>Title</th> 12 <th>Body</th> 13 <th colspan="3"></th> 14 </tr> 15 </thead> 16 17 <tbody> 18 <% @books.each do |book| %> 19 <tr> 20 <td><%= book.title %></td> 21 <td><%= book.body %></td> 22 <td><%= link_to "Show", book_path(book.id) %></td> 23 <td><%= link_to "Edit", edit_book_path(book.id) %></td> 24 <td><%= link_to "Destroy", book_path(book.id), method: :delete, "data-confirm" => "本当に削除しますか?" %></td> 25 </tr> 26 <% end %> 27 </tbody> 28 </table> 29 30 <h2>New book</h2> 31 32 <% if @book.errors.any? %> 33 <div id="error_explanation"> 34 <h2><%= @book.errors.count %> error prohibited this book from being saved: 35 </h2> 36 <ul> 37 <% @book.errors.full_messages.each do |message| %> 38 <li><%= message %></li> 39 <% end %> 40 </ul> 41 </div> 42 <% end %> 43 44 <%= form_with model: @book do |f| %> 45 46 <div> 47 <label>Title</label> 48 <div class="field"><%= f.text_field :title %></div> 49 </div> 50 <div> 51 <label>Body</label> 52 <div class="field"><%= f.text_area :body %></div> 53 </div> 54 <div class="field"><%= f.submit 'Create Book' %></div> 55 56 <% end %> 57</body>
edit.html.erb
1<h1>Editing Book</h1> 2 3<% if @book.errors.any? %> 4 <div id="error_explanation"> 5 <h2><%= @book.errors.count %> error prohibited this book from being saved:</h2> 6 <ul> 7 <% @book.errors.full_messages.each do |message| %> 8 <li><%= message %></li> 9 <% end %> 10 </ul> 11 </div> 12<% end %> 13 14<%= form_with model: @book, local:true do |f| %> 15 16 <div> <!--<div class="field_error">--> 17 <label>Title</label> 18 <div class="field"><%= f.text_field :title %></div> 19 </div> 20 21 <div> <!--<div class="field_error">--> 22 <label>Body</label> 23 <div class="field"><%= f.text_area :body %></div> 24 </div> 25 26 <div class="field"><%= f.submit 'Update Book' %></div> 27 28 <div class="field"> 29 <span class="link_l"><%= link_to "Show", book_path(@book.id) %></span> 30 <span><%= link_to "Back", books_path %></span> 31 </div> 32 33<% end %>
show.html.erb
1<% if flash[:notice] %> 2 <p class="notice"><%= notice %></p> 3<% end %> 4 5<p><strong>Title:</strong> <%= @book.title %></p> 6<p><strong>Body:</strong> <%= @book.body %></p> 7 8<div class="field"> 9 <span class="link_l"><%= link_to "Edit", edit_book_path(@book.id) %></span> 10 <span><%= link_to "Back", books_path(@book.id) %></span> 11</div>
application.html.erb
1<!DOCTYPE html> 2<html> 3 <head> 4 <title>Bookers</title> 5 <%= csrf_meta_tags %> 6 7 <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %> 8 <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %> 9 </head> 10 11 <body> 12 <%= yield %> 13 </body> 14</html>
試したこと
【エラー1.2】
各種記述、の確認、各挙動の確認
メンターの方に確認したところ、解決できず
【エラー3】
『routes.rb』で「get root :to => 'homes#top'」と記述しており、同様のエラーが発生していた。getを取り消し実行したが、変わらず現在に至る
【エラー4】
『application.html.erb』に「<%= javascript_pack_tag 'application' %>」と追加して見たところ別途エラーが複数発生。使い方を検索したところ、Webpackerのインストールを...とあったたが、わからないものだったため、現状は対応せず
【エラー5】
同じようなエラーの質問があったが特に記述に問題なくわからなかった。※参照
その他
最後までご確認ありがとうございます。
何がわからないかがわからなない状態が多く、エラーの理解や、検索のかけ方が甘かったりと、本投稿の内容が伝わりづらい点が多いこと申し訳ございません。何卒よろしくお願いいたします。

回答1件
あなたの回答
tips
プレビュー