質問: Note.find(params[:id])←ここの部分がおかしい end と表示されました。 idがshowメソットに記されていないという認識で間違いないですよね? SequelProを見ても、notesテーブルにきちんと投稿したカラムにidが書かれています。 何かコマンドを打ち忘れ、データが反映されていないのでしょうか? 回答お願いします。 routes.rbは Rails.application.routes.draw do devise_for :users resources :users, only: [:index, :show, :edit, :update] resources :notes, only: [:show, :create, :edit, :update, :destroy] get'/top' => 'home#top' get'/connection' => 'home#connection' get'/notes/new' => 'notes#new' post'/notes' =>'notes#create' get'/notes' =>'notes#index' get'/show' =>"notes#show" get'/edit' =>'notes#edit' patch'/notes/:id' =>"notes#update",as:'update_note' delete'/notes/:id' =>"notes#destroy",as:'destroy_note' post '/like/:note_id' => 'likes#like', as: 'like' delete '/unlike/:note_id' => 'likes#unlike', as: 'unlike' root 'home#top' get'/about' => 'home#about' end のようになっています。 idはshowである、のように記述していないのでは?と思って困っています。 お願いいたします。
回答: 画面がないので詳細にはわかりませんがroutingがおかしいです route.rbの中で notes/:id, to: 'notes#show'みたいに書いてあるとおもうですが、おそらくいま表示しているページは /notes/showではないでしょうか なので /notes/showにアクセス routing的には /notes/:idなので /notes/showはid=showを探しに行く Note.find('show') => idがshowのやつを探しに行く。あれ、ないじゃん、 idがshowっていうデータないよーーーーで Couldn't find Note with 'id'=show がでているというわけです なので実際にアクセスするべきページは /notes/1とか/notes/23とかの数字が入るはずですこうすると Noteテーブルからidが1とかのレコードを探してきてくれます!