表題通りです。IDが取得できません。
"/books/1"や"/books/1/edit"と直接URLを打ち込む場合は表示されますが、リダイレクト機能やリンクを踏んでアクセスしようとすると "Couldn't find Book with 'id'=:id"とエラー表示が出ます。
リダイレクトやリンクの記載方法がおかしいのかもしれません。ただ、調べても何がおかしいのかがわかりません。
ご指導お願い致します。
routes
Rails.application.routes.draw do root to:"top#index" post "/books"=>"books#create" get "/books"=>"books#index" get "/books/:id"=>"books#show" get "/books/:id/edit"=>"books#edit" patch "/books/:id"=>"books#update" end
controller
class BooksController < ApplicationController def index @books = Book.all @books = Book.order("id") @book=Book.new end def show @book = Book.find(params[:id]) end def create book=Book.new(book_params) book.save redirect_to "/books" end def edit @book = Book.find(params[:id]) end def update book = Book.find(params[:id]) book.update(book_params) redirect_to "/books/id" end private def book_params params.require(:book).permit(:title, :body) end end
index
<div=> <h1>Books</h1> <% @books.each do |book| %> <p>title</p> <p><%= book.title %></p> <p>body</p> <p><%= book.body %></p> <span> <%= link_to "show","/books/:id" %> </span> <span> <%= link_to "edit","/books/:id/edit" %> </span> <span> <%= link_to "destoroy","/books" %> </span> <% end %> <h1>New book</h1> <%= form_with model:@book,local:true do |f| %> <h4>title</h4> <%= f.text_field:title %> <h4>body</h4> <%= f.text_area:body %> <p><%= f.submit 'Create Book' %></p> <% end %>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。