首页 > 解决方案 > 无法从我的 Rails 服务器获得 json 响应

问题描述

我有一个 Rails 服务器,我正在尝试从 React 客户端发出获取请求。每次发表新评论时,我都想获得帖子的评论。

posts_controller.rb

  # GET /post/1
  # GET /post/1.json
  def show
    @post = Post.kept.friendly.find(params[:id])
    @comments = @post.comments.kept.order(created_at: :desc)
  end

我的反应组件

  useEffect(() => {
    fetch('/posts/post-title')
      .then((res) => {
        console.log("res", res);
      })
      .catch((err) => {
        console.log("err", err);
      });
  }, []);

结果

res Response {type: "basic", url: "http://localhost:3000/posts/post-title", redirected: false, status: 200, ok: true, …}

我打开该响应,但我没有看到任何评论 json。我试过做res.json(),但我得到了undefined

我做错了什么?

标签: ruby-on-railsreactjs

解决方案


将您的表演动作更改为此

def show
  @post = Post.kept.friendly.find(params[:id])
  @comments = @post.comments.kept.order(created_at: :desc)
  render json: @comments
end

和你的 JS

useEffect(() => {
  fetch('/posts/post-title')
    .then(res => res.json())
    .then((post) => {
      console.log(post)
    })
    .catch((err) => {
      console.log("err", err);
    });
}, []);

推荐阅读