@IsaevAlex
Веб разработчик

Как связать модели Ruby on Rails на ReactJS?

Всем привет! В общем создаю проект на rails. Для клиентской части использую React JS. На странице users/show создаю посты, а модель Post имеет отношение belongs_to к User. Мне необходимо вывести имя автора поста (post.user.name) А React в компоненте Post не выводит это. Как в ReactJs это сделать, если про отношение моделей User и Post он ничего не знает?
  • Вопрос задан
  • 455 просмотров
Решения вопроса 1
@undefined_title
В реакт приложениях для хранения данных используется библиотека redux, сами запросы надо делать в действиях(action), для того чтобы бороться с асинхронностью и правильно делать запросы используй redux-thunk или redux-api-middleware, если в body ответа от сервера ты получаешь не те данные которые тебе надо, то это проблема именно на сервере. У тебя должен быть эндпоинт /api/user/:id где ты можешь получить юзера, и в обьекте юзера должен быть post_id c id поста, и ты бы мог получить его например на /api/post/:id, но если тебе надо сделать на скорую руку делай без редакса и в ComponentDidMout через fetch стягивай данные, в es6 будет что то такое
constructor(props) {
  super(props);
  this.state = {
    post: {
      user: {}
    }
  }
}
ComponentDidMount() {
  const { postID } = this.props;
  let data = fetch('localhost:3000/post/' + postID)
    .then((response) => { 
      this.setState({post: JSON.stringify(response.json)}, (prevState) => {
        fetch('localhost:3000/user/' + prevState.post.user_id)
        .then ((response) => {
          this.setState({ ...prevState, user:  JSON.stringify(response.json)});
        });
      });
    });
}
render () {
  return (
    <div>
      {this.state.post.user.name}
    </div>
  )
}

еще надо заметить что на сервере должно быть разрешение CORS Для этого клиента
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы