Я следую за эти две обучающие программы в целом,Rails не создает подлинность маркера
и реализует простую систему комментариев в Rails. Однако у меня возникла проблема с обработкой отправки. Я выполнил простой запрос AJAX POST для отправки данных моей формы (как состояние). Это выглядит следующим образом:
var CommentForm = React.createClass({
handleChange: function(e) {
var name, obj;
name = e.target.name;
return this.setState((
obj = {},
obj["" + name] = e.target.value,
obj
));
},
handleSubmit: function(e) {
e.preventDefault();
var author = React.findDOMNode(this.refs.author).value.trim();
var text = React.findDOMNode(this.refs.text).value.trim();
if(!text || !author) {
return;
}
$.post(this.props.postUrl, {comment: this.state}, null, "application/json");
React.findDOMNode(this.refs.author).value = '';
React.findDOMNode(this.refs.text).value = '';
},
render: function() {
return (
<form className="commentForm" onSubmit={this.handleSubmit}>
<input type="text" placeholder="Your name" ref="author" name="author" onChange={this.handleChange} />
<input type="text" placeholder="Say something..." ref="text" name="text" onChange={this.handleChange} />
<input type="submit" value="Post" />
</form>
);
}
});
Как я изучил консоль Похоже, она проходит в правильном пути и правильный Params, за исключением не authenticity_token паров. Вот скриншот того, что находится в консоли.
В первой ссылке, которую я предоставил, он сказал, что jquery_ujs обрабатывает генерации и передачи маркера подлинности для Ajax POST. Однако это не так в моем случае. Что мне не хватает?
Редактировать: У меня есть несколько ответов, которые помогут решить мою проблему. Тем не менее, я по-прежнему занимаюсь любопытством в отношении того, что делает разницу между моим кодом и кодом в этом учебнике?
Спасибо за решение! Я тоже не собирался отключать чек.Но я все еще удивляюсь, что отличает его учебник от моего кода? –
Я только что проверил его учебник, он не вставлял свой ApplicationController, поэтому я не могу сказать, активирован ли он 'protect_from_forgery' или нет, по крайней мере, в его собственных контроллерах он не использует его – wiesion
Да, подумал об этом , но он прямо говорит, что: «Если вы использовали другие JS-фреймворки вместе с Rails (например, AngularJS) для создания похожих функций, возможно, у вас возникли проблемы, потому что ваши запросы POST не включают токен CSRF, требуемый Rails , поэтому почему мы не столкнулись с этой проблемой? Просто потому, что мы используем jQuery для взаимодействия с нашим бэкэнд, а ненавязчивый драйвер Rails jquery_ujs будет включать токен CSRF для каждого запроса AJAX для нас. Вот что меня смущает. Просто отправил ему электронное письмо. –