前提・実現したいこと
furima アプリの商品詳細機能を実装しております、詳細ページに遷移したいが、商品画像をクリックしたら
発生している問題・エラーメッセージ
Couldn't find Item with 'id'=#<Item::ActiveRecord_Relation:0x00007fd70f1f0200>
該当のソースコード
ruby
1class ItemsController < ApplicationController 2 before_action :authenticate_user!, except: [:index,:show] 3 4 def index 5 @items = Item.order('created_at DESC') 6 end 7 8 def new 9 @item = Item.new 10 end 11 12 def show 13 @item = Item.find(params[:id]) 14 end 15 16 def create 17 @item = Item.new(item_params) 18 if @item.save 19 redirect_to root_path 20 else 21 render :new 22 end 23 end 24 25 private 26 27 def item_params 28 params.require(:item).permit(:image, :name, :info, :price, :category_id, :prefecture_id, :status_id, :scheduled_id, 29 :shipping_id).merge(user_id: current_user.id) 30 end 31end 32
試したこと
ルーティングを確認し
ruby
1Rails.application.routes.draw do 2 devise_for :users 3 4 resources :items, only: [:new,:create,:index,:show] 5 root to: 'items#index' 6end
問題なさそう、、、
ターミナル上
ruby
1 POST /users(.:format) devise/registrations#create 2 items GET /items(.:format) items#index 3 POST /items(.:format) items#create 4 new_item GET /items/new(.:format) items#new 5 item GET /items/:id(.:format) items#show 6 root GET / items#index 7
問題なさそう、、、
ruby
1 def show 2 binding.pry 3 @item = Item.find(params[:id]) 4 end
詳細ページへ遷移時のターミナル上
ruby
1ActiveRecord::RecordNotFound (Couldn't find Item with 'id'=#<Item::ActiveRecord_Relation:0x00007fd70f1f0200>): 2 3app/controllers/items_controller.rb:13:in `show' 4Started GET "/items/%23%3CItem::ActiveRecord_Relation:0x00007fd70f1f0200%3E" for ::1 at 2021-10-03 21:25:59 +0900 5Processing by ItemsController#show as HTML 6 Parameters: {"id"=>"#<Item::ActiveRecord_Relation:0x00007fd70f1f0200>"} 7 8From: /Users/user/projects/furima-35933/app/controllers/items_controller.rb:13 ItemsController#show: 9 10 12: def show 11 => 13: binding.pry 12 14: @item = Item.find(params[:id]) 13 15: end 14 15[1] pry(#<ItemsController>)> params 16=> <ActionController::Parameters {"controller"=>"items", "action"=>"show", "id"=>"#<Item::ActiveRecord_Relation:0x00007fd70f1f0200>"} permitted: false> 17[2] pry(#<ItemsController>)> @item 18=> nil 19[3] pry(#<ItemsController>)> Item.find(params[:id]) 20 Item Load (0.7ms) SELECT `items`.* FROM `items` WHERE `items`.`id` = NULL LIMIT 1 21 ↳ (pry):3:in `show' 22ActiveRecord::RecordNotFound: Couldn't find Item with 'id'=#<Item::ActiveRecord_Relation:0x00007fd70f1f0200> 23from /Users/user/.rbenv/versions/2.6.5/lib/ruby/gems/2.6.0/gems/activerecord-6.0.4.1/lib/active_record/core.rb:177:in `find' 24[4] pry(#<ItemsController>)> params[:id] 25=> "#<Item::ActiveRecord_Relation:0x00007fd70f1f0200>"
prams内idはおかしそうですが、、、
SequelPro上
データ(ID)はありますが、、、調べてみましたが、該当する解決は見つかりませんでした、、、
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー