Получить рельсы связанные объекты с React - PullRequest
0 голосов
/ 05 июня 2019

После установки простой пост-связанной пользовательской модели с рельсами я хотел бы получить аватар владельца сообщения с реакцией, но все, что я получаю эту ошибку:

TypeError: Невозможно прочитать свойство 'username''аватар' и т. д. из неопределенного

Я пытался получить ассоциированного пользователя почты при получении сообщения

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

Итак, у кого-нибудь есть подсказка, чтобы сэкономить на этом?

1 Ответ

3 голосов
/ 05 июня 2019

Это потому, что ваши возвращенные данные не включают информацию о пользователе. В своем ответе на вызов ajax вы не можете делать запросы, как если бы вы находились в контроллере rails.

В вашем случае вы должны возвращать информацию пользователя вместе с сообщением в действии вашего контроллера.

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

render json: { post: post }

Если вам нужна информация о пользователях для нескольких постов, вы можете использовать энергичную загрузку в вашем действии контроллера rails

@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 }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...