ここのテスト課題は基本的に以前やったブックマークの課題を参考にして 取り組んだ。

ただ、以下のエラーで非常に悩んだ。

ActiveRecord::RecordNotFound:
Couldn't find Post with 'id'=likes
#訳 idがlikesのPostは見つかりません。

以下の質問のリンクでActiveRecord::RecordNotFoundについて調べたら https://teratail.com/questions/306876

「params[:id] はパスからやってきます。find は ID を検索します。IDが見つからないと

ActiveRecord::RecordNotFound になります。なので Post.find(nil) はエラーになります。

(IDがnilのレコードはない)

ここでパスが通っていないか、ルーティングにミスがあるのではないかと考えた。

ルーティング

routes.rb(一部抜粋)

resources :posts do
    resources :likes, only: %i[create destroy]
end

Rspecのllikes_spec.rbにvisit 'posts/likes’という記載があった。

この/posts/likesのURLを作るために以下のようにする。

routes.rb(変更後)

resources :posts do
    resources :likes, only: %i[create destroy]
    get 'likes', on: :collection(追記)
end

もしくは

resources :posts do
    resources :likes, only: %i[create destroy]
    collection do (以下、3文を追記)
        get :likes
    end
       #collection は全部のデータに対するアクションで使用する。
end