我在保存模型时遇到了Rails控制器的响应问题。我可以看到XHR响应是在Chrome的devtools的“网络”标签中生成的,但success
或error
函数不会触发。我怀疑这是在视图中直接强制post方法和不同url的结果,但我不确定,也许我搞砸了一些语法。这是咖啡中保存功能的片段:
save: (user_id) =>
model = @model
if $(".task").val()
@$el.find(".task").each ->
model.set
body: @value
user_id: user_id
task_title_id: model.id
return
model.save null, type: 'post', url: '/tasks',
success: (model, response) ->
console.log 'tasks saved!'
error: (model, response) ->
console.log "error! ", response.responseText
else
console.log 'nothing to save'
并编译JS:
save = function(user_id) {
var model;
model = this.model;
if ($(".task").val()) {
this.$el.find(".task").each(function() {
model.set({
body: this.value,
user_id: user_id,
task_title_id: model.id
});
});
return model.save(null, {
type: 'post',
url: '/tasks'
}, {
success: function(model, response) {
return console.log('tasks saved!');
},
error: function(model, response) {
return console.log("error! ", response.responseText);
}
});
} else {
return console.log('nothing to save');
}
};
Trivia:我必须为每个现有Task
生成一个新的TasktTitle
视图,然后将这些新的Tasks
提交给服务器。作为Backbone的新手我除了渲染TaskTitles
集合并为每个TaskTitle
视图添加输入字段,然后强制post
方法和{{1保存时的url。它确实感觉很脏,但除了捕获响应之外它按预期工作,这是一个关键部分,因为成功\错误会发生更多逻辑。