質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

1回答

273閲覧

フォロー機能に置いて@user = User.find(params[:id]の値をuser_idの値にしたい。

NEMOTOSHOTA

総合スコア32

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2020/06/04 02:19

編集2020/11/11 02:52

あああああああああああああああああああああああああああああああああああああああああああ

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

NEMOTOSHOTA

2020/06/04 07:14 編集

上記記事をみてみたのですが、今回のエラーとは関係がないと結論を出しました。 上記記事を共有していただいた背景を説明していただくと、理解が深まると思います。
Mugheart

2020/06/04 07:36

エラーが起きている箇所です。 # 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を共有しているのでしょうか?
NEMOTOSHOTA

2020/06/04 07:46

なるほど、ルーティングについては理解ができました。 確かにlikeモデルと同様、gymの中に書く必要がありました。 gym_idに関しては @gym = Gym.find(params[:id]) で取得しています。 ユーザーとジムは同じIDを共有していなく、ユーザー:ジム=1:多の関係になっています。
Mugheart

2020/06/04 07:53

すみませんが言っていることの意味が理解できません。 > 確かにlikeモデルと同様、gymの中に書く必要がありました。 とはどういうことでしょうか? > ユーザーとジムは同じIDを共有していなく、ユーザー:ジム=1:多の関係になっています。 当たり前です。そんなことはわかっています。
NEMOTOSHOTA

2020/06/04 07:59 編集

>確かにlikeモデルと同様、gymの中に書く必要がありました。 とはどういうことでしょうか? routes.rbに下記の記述が必要でした。 resources :gyms do resources :likes, only: [:create, :destroy] resources :relationships, only: [:create, :destroy] end ユーザーとジムは同じIDを共有していなく、ユーザー:ジム=1:多の関係になっています。 >当たり前です。そんなことはわかっています。 なるほど、知っていた上での表現だったのですね。 よかったです。モデル周りのことは記載していなかったので、自分の説明不足が原因かと思っておりました。
Mugheart

2020/06/04 08:01

本当にルーティングについて理解できたんですか?ちょっと埒があかないですね...。 申し訳ないですがこれ以上は付き合えないのでとりあえず回答しておきます。
guest

回答1

0

とりあえずエラーの解決法だけ書いておきます。

rb

1@user = User.find(params[:id])

これはそもそも用意する必要はないです。

erb

1<% if current_user?(@gym.user) %>

ここでご自身が使われている通り、@gym.userを代わりに使えば良いです。

erb

1<%= render 'relationships/follow', user: @gym.user %>

投稿2020/06/04 08:01

Mugheart

総合スコア2349

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問