gpt4 book ai didi

javascript - 使用 React 获取 Rails 关联对象

转载 作者:行者123 更新时间:2023-11-28 17:03:59 26 4
gpt4 key购买 nike

在使用 Rails 设置一个简单的帖子关联用户模型后,我想通过 React 获取帖子所有者头像,但我得到了这个错误:

TypeError: Cannot read property 'username''avatar' etc.. of undefined

我尝试让关联的帖子用户获取帖子

async getPost() {
// this.setState({showProgress: true})

let {
match: { params }
} = this.props;

const response = await axios
.get(`/posts/${params.id}`, {
headers: {
Accept: "application/json",
"Content-Type": "application/json"
},
credentials: "same-origin"
})

.then(result => {
this.setState({
title: result.data.post.title,
user: result.data.post.user.username,
user: result.data.post.user,

url: result.data.post.user.avatar.post.url
});
})
.catch(error => {
console.error(error);
});


}

但是日志上仍然显示错误,并且帖子中填写的用户是user_id

那么,有人对此有什么建议吗?

最佳答案

这是因为您返回的数据不包含用户信息。在 ajax 调用响应中,您无法像在 Rails Controller 中一样进行查询。

就您而言,您应该在 Controller 操作中返回用户信息和帖子。

post = Post.find(params[:id])
user = post.user
post = post.as_json
post[:user] = user.as_json

render json: { post: post }

如果您需要多个帖子的用户信息,您可以在 Rails Controller 操作中使用预先加载

@posts = Post.includes(:user).all.map do |post|
post_json = post.as_json
post_json[:user] = post.user.as_json
post_json
end

render json: { posts: @posts }

关于javascript - 使用 React 获取 Rails 关联对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56451709/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com