Techioz Blog

Ruby on Rails と React Frontend (関連データの表示)

概要

ユーザー間の関連付けを表示して、レール内のテーブルを投稿しようとしました。私の問題は、ユーザーがログインすると、私の反応フロントエンドで自分の投稿をすべて表示できる必要があることです。ただし、フロントエンド リクエストは、現在のユーザーに関連する最初のレコードしか取得できません。 ここでバックエンドにフェッチ リクエストを送信し、ユーザーの ID に関連する投稿を取得します。

export default function Profile({currentUser}){

    const [posts, setPosts] = useState([])

     useEffect(() => {
        fetch(`/posts/${currentUser.id}`)
        .then((r) =>{
          if(r.ok){
              r.json().then((posts)=>setPosts(posts))
          }
      })
    }, [])

そしてこれが私のルートの様子です

 get '/posts/:id', to: "posts#show"

最後に、ここはバックエンドがログインしているユーザーに関連するブログ投稿を取得する場所です。

  def show
     posts = Post.find_by(id:params[:id])
     render json: posts, include: :user
  end

find_by メソッドは条件を満たす最初のレコードのみを取得するという事実を知っています。 また、user.Post.all を使用してレコードを取得してみました。何かアドバイスはありますか?

解決策

現在、リクエストは currentUser の :id を含む Post を返します。それはあなたが望んでいることではないと思います…:)

次のようなものが欲しいと思います:

def show
   posts = User.find(params[:id]).posts # Hint: find_by(id: id) == find(id)
   ...
end