Поэтому у меня есть приложение 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>
)
}
})
это должно быть так
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;
}
Не используйте ajax. Просто используйте обычную форму.
react-router
?