あああああああああああああああああああああああああああああああああああああああああああ
Railsのルーティングに対する理解度が低いようなので、こちらに目を通してみては?
https://railsguides.jp/routing.html
上記記事をみてみたのですが、今回のエラーとは関係がないと結論を出しました。
上記記事を共有していただいた背景を説明していただくと、理解が深まると思います。
エラーが起きている箇所です。
# GymsController::show
@user = User.find(params[:id])
routes.rbの該当箇所です。
resources :gyms do
resources :likes, only: [:create, :destroy]
end
ジム詳細のURI Patternです。
/gyms/:id
質問中に記載がないですが、おそらくエラーが起きた時点のURLです。
http://localhost:3000/gyms/3
質問中の「推測」です。
> user_idの値を渡すはずなのにgym_idの値を渡してしまっている
user_idを渡すはずというのはどこで判断したんでしょうか?
どうみても渡るはずのない値に思えます。これが上記記事を共有した背景です。
@gymはどうやって取得したのでしょう...?質問中に記載がないので憶測ですが、
@gym = Gym.find(params[:id]) ではないですか?
ユーザーとジムは同じIDを共有しているのでしょうか?
なるほど、ルーティングについては理解ができました。
確かにlikeモデルと同様、gymの中に書く必要がありました。
gym_idに関しては
@gym = Gym.find(params[:id]) で取得しています。
ユーザーとジムは同じIDを共有していなく、ユーザー:ジム=1:多の関係になっています。
すみませんが言っていることの意味が理解できません。
> 確かにlikeモデルと同様、gymの中に書く必要がありました。
とはどういうことでしょうか?
> ユーザーとジムは同じIDを共有していなく、ユーザー:ジム=1:多の関係になっています。
当たり前です。そんなことはわかっています。
>確かにlikeモデルと同様、gymの中に書く必要がありました。
とはどういうことでしょうか?
routes.rbに下記の記述が必要でした。
resources :gyms do
resources :likes, only: [:create, :destroy]
resources :relationships, only: [:create, :destroy]
end
ユーザーとジムは同じIDを共有していなく、ユーザー:ジム=1:多の関係になっています。
>当たり前です。そんなことはわかっています。
なるほど、知っていた上での表現だったのですね。
よかったです。モデル周りのことは記載していなかったので、自分の説明不足が原因かと思っておりました。
本当にルーティングについて理解できたんですか?ちょっと埒があかないですね...。
申し訳ないですがこれ以上は付き合えないのでとりあえず回答しておきます。