質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Cloud9

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

3083閲覧

railsで『Couldn't find Book with 'id'=1』を解決したいです

Maaxuhbd

総合スコア7

Cloud9

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

Webサイト

一つのドメイン上に存在するWebページの集合体をWebサイトと呼びます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2021/04/29 06:51

前提・実現したいこと

詳細画面を表示したいです。
現在、1対多の関係でBookとuserが結びついているwebアプリケーションを制作しようとしています。
また、詳細画面にはUser情報と新規投稿画面を画面の左側に表示したいと考えています。

どなたか分かる方よろしくお願い致します。

詳細画面に表示されるエラーメッセージ

エラーメッセージ
ActiveRecord::RecordNotFound in BooksController#show
Couldn't find Book with 'id'=1

Bookモデルの中身

以下はコンソール上で、Book.allを実行したときの様子です。

ソースコード

$ Book.all =><#Book id: 16, created_at: "2021-04-28 12:57:10", updated_at: "2021-04-28 12:57:10", title: "ppppp", body: "jjjjjj", user_id: 1>

###以下のコードは今回のエラーに関係ありそうなコードです
routes.rb

Rails.application.routes.draw do devise_for :users root to: 'homes#top' get "home/about" => "homes#about" resources :books resources :users, only: [:show, :create, :index, :edit, :update] end

show.html.erb

<div class='container px-5 px-sm-0'> <div class='row'> <div class='col-md-3'> <!--user.infoの部分テンプレート--> <%= render 'users/user', user: @user %> <!-- 投稿画面の部分テンプレート--> <%= render 'books/book', book: @book_new %> </div> <!--投稿の詳細部分--> <div class="col-md-8 offset-md-1"> <h2>Book detail</h2> <table class="table"> <tbody> <tr> <td> <%= link_to user_path(@book.user_id) do %> <%= attachment_image_tag @book.user , :profile_image, :fill, 50, 50,fallback: "no_image.jpg" %></br> <%= @book.user.name %> <% end %> </td> <td> <%= link_to @book.title ,edit_book_path(current_user) %> </td> <td> <%= @book.body %> </td> <% if @book.user_id == current_user.id %> <td><%= link_to "Edit",edit_book_path(@book.id), class: "btn btn-sm btn-success" %></td> <td><%= link_to "Destroy", book_path(@book.id),method: :delete ,class: "btn btn-sm btn-danger" , "data-confirm" => "本当に削除しますか?"%></td> <% end %> </tr> </tbody> </table> </div> </div> </div>

books_controllor

class BooksController < ApplicationController before_action :authenticate_user! def index @user = current_user @book = Book.new @books = Book.all end def create @user = current_user @book = Book.new(book_params) @book.user_id = current_user.id @book.save render action: :show end def show @user = current_user @book = Book.find(params[:id]) @newbook = Book.new end def edit @book = Book.find(params[:id]) end def update @book = Book.find(params[:id]) @book.update(book_params) @book.user_id = current_user.id redirect_to books_path end def destroy @book = Book.find(params[:id]) @book.destroy redirect_to books_path end private def book_params params.require(:book).permit(:title, :body) end end

user情報の部分テンプレート
_user.html.erb

<h2>User info</h2> <tr> <%= attachment_image_tag user, :profile_image,:fill,60,60,fallback:"no_image.jpg"%> </tr> <table class='table'> <tbody> <tr> <th>name</th> <th><%= user.name %></th> </tr> <tr> <th>introduction</th> <th><%= user.introduction %></th> </tr> </tbody> </table> <div class='row'> <%= link_to "",edit_user_path(current_user),class:"fas fa-user-cog btn btn-outline-secondary btn-block" %> </div>

新規投稿の部分テンプレート
_book.html.erb

<h2 class="mt-3">New book</h2> <%= form_with model:book,local:true do |f| %>   <div class="form-group">   <%= f.label :title %>   <%= f.text_field :title, class: "form-control book_title" %>   </div>   <div class="form-group">   <%= f.label :body,"Opinion" %>   <%= f.text_area :body,class: "form-control book_body" %>   </div>   <div class="form-group">   <%=f.submit "Create Book",class: "btn btn-success" %>   </div>   <% end %>

bookのdb>migrateファイルです

class CreateBooks < ActiveRecord::Migration[5.2] def change create_table :books do |t| t.timestamps end end end

bookのdb>migrateファイルです

class AddColumnToBooks < ActiveRecord::Migration[5.2] def change add_column :books, :title, :string add_column :books, :body, :text add_column :books, :user_id, :integer end end

試したこと

同じエラーの記事を参考にroutes.rbを確認したがresourcesを使っているため特に問題なさそうです。

開発環境とフレームワーク

cloud9
Ruby on Rails

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Book に id=1のデータが無いのです。
どういう操作をしたらそのエラーになったのでしょう。
その操作の部分に問題があります。showには多分問題は無いです。

投稿2021/04/29 08:07

winterboum

総合スコア23567

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Maaxuhbd

2021/04/30 03:07

回答ありがとうございます。 showページに移動する際のlinkが間違えてのが問題でした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問