@uiharu_taketoko

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

特定の投稿に紐づいたデータの取得について解決策がわかりません。

Q&A

Closed

解決したいこと

プログラミング初心者です。
投稿に紐づいたテーブルとアクティブストレージだけを取得し表示したいのですが
取得がうまくいかずエラーになり表示ができません。
解決方法を教えていただけると幸いです。

発生している問題・エラー

method errorなど

エラー画面
スクリーンショット 2022-07-25 21.11.10.png
コントローラー
スクリーンショット 2022-07-25 21.15.36.png
スクリーンショット 2022-07-25 21.22.55.png
ビュー
スクリーンショット 2022-07-25 21.18.16.png

def show
  @travel = Travel.find(params[:id])
  @travel_impression = TravelImpression.new
  @impression = TravelImpression.find(params[:travel_id])
end

自分で試したこと

.findの中身を色々と変更しました。
params[:id]
params[:travel_id]
などを試しましたがわかりませんでした。

0 likes

2Answer

今は闇雲に適当にパラメーターを指定しているようなので、まずはRailsのログを見てどういうパラメーターが実際にクライアントからサーバーに投げられているか確認すると良いと思います。

def travel_impression_params
  ...

そうしてこの部分が正しいのかどうか、なぜこの関数を定義しているのか、そしてなぜ使っていないのか?
などを考えてみてはどうでしょうか?

更にいうと

  TravelImpression.find(params[:travel_id])

は原理的に違うと感じます。

  • TravelImpressionを探したい
  • IDはparams[:travel_id](TravelモデルのID)を指定している

簡単に言うとUserUserProductというモデルがあったとして

  UserProduct.find(params[:user_id])

ってやっている感じです。TravelTravelImpressionにリレーションが設定されているなら

  travel_id = ...
  TravelImpression.find_by(travel_id: travel_id)

少なくともこういう感じになるような気はします(が、Travel1つに対して、TravelImpressionは1つなのでしょうか?...)。

0Like

現状では1度のみしか投稿できないように設定する予定なので
1:1の関係になります

できました!
ありがとうございました!

0Like

Your answer might help someone💌