У меня есть приложение Rails, использующее отправку сообщений React в мою базу данных с помощью вызова ajax. Как мне справиться с перенаправлением?

0

Поэтому у меня есть приложение Rails, которое пытается отправить когорту в базу данных. Я могу получить его для публикации в базе данных, но я не знаю, как обрабатывать перенаправление.

var NewCohort = React.createClass ({
  getInitialState: function() {
    return {name:'',description:''}
  },
  handleNameChange: function(e) {
    this.setState({name:e.target.value})
  },
  handleDescriptionChange: function(e) {
    this.setState({description:e.target.value})
  },
  handleSubmit: function(e) {
    var that = this
    $.ajax({
      url: '/cohorts',
      method: 'POST',
      data: {
        name: that.state.name,
        description: that.state.description
      },
      success: function(data, success, xhr) {
        console.log(data)
      }
    })
  },
  render: function() {
    return (
      <div className="container">
        <h3>Create a new cohort</h3>
        <form onSubmit={this.handleSubmit}>
          <input type="text" value={this.state.name} onChange={this.handleNameChange}/>
          <input type="text" value={this.state.description} onChange={this.handleDescriptionChange}/>
          <input type="submit"/>
        </form>
      </div>
    )
  }
})

Является ли мой вызов ajax, который я отправляю своему контроллеру, который

def create
    @cohort = Cohort.create(name: params[:name], description: params[:description])
    render component: 'ShowCohort', props: { cohort: @cohort }
end

Что в моей функции успеха ajax, данные представляют собой новый код html React. Как я действительно перенаправляю страницу?

Это мой компонент React для рендеринга

var ShowCohort = React.createClass ({
  render: function() {
    return (
      <div className="container">
        <h3>Hello {this.props.cohort.name}</h3>
        <p>{this.props.cohort.description}</p>
      </div>
    )
  }
})
  • 0
    Какой вид перенаправления вы имеете в виду здесь? Традиционный браузер перенаправления, который будет получать целую новую страницу с сервера и отображать ее в браузере для замены текущей страницы? Или вы хотите, чтобы ваше приложение React имело собственную маршрутизацию и URL-адреса, управляемые с помощью (возможно) react-router ?
  • 0
    Да, я понял, что использовал React неправильно. Я хотел перенаправить, и это не способ перенаправления.
Теги:
crud

2 ответа

0

это должно быть так

success: function(data, success, xhr) {
        window.location.href = "redirect_url"; 
      }

вы можете передать его как json так же, как это в своем контроллере

render json: {"redirect":true,"redirect_url": apps_path}, status:200

success: function(data, success, xhr) {
        window.location.href = data.redirect_url;
      }
0

Не используйте ajax. Просто используйте обычную форму.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню