ped*_*ete 11 destroy backbone.js ruby-on-rails-3
我有一个我试图销毁的骨干模型,但是没有与请求一起发送参数,因此服务器返回"删除404未找到"错误.
我承认我的结构有点奇怪,因为我根据它们是否已经在列表中创建/销毁这些项目.
var list_item = new MyApp.Models.ListItem({item_id: this.model.id, group_id: this.model.group_id});
if($(e.currentTarget).hasClass('add')){
list_item.save(list_item, {
success: function(response){
this.model.attributes.addedtolist_id = response.id
console.log(this.model);
},
error: function(){
alert('could not save item');
}
});
} else if($(e.currentTarget).hasClass('remove')) {
list_item.id=this.model.addedtolist_id;
list_item.attributes.id = this.model.addedtolist_id;
console.log(list_item);
list_item.destroy({
success: function(){
alert('delete');
},
error: function(){
alert('could not uncheck');
}
});
}
list_item在销毁之前的控制台输出是
_escapedAttributes: Object _previousAttributes: Object _setting: false attributes: Object id: 2 item_id: 66 group_id: 64 __proto__: Object cid: "c23" id: 2 __proto__: q
但是当我查看使用删除请求发送的标头时,我没有发送任何参数.
-----------------------更新params被发送,404仍然被退回--------------
根据Yaroslav的建议,我在destroy方法中添加了一个'header',但我的rails控制器仍然返回DELETE 404 not found错误.我只是想回到listitem,以确保在我销毁之前我得到了正确的一个.
我的控制器是
def destroy listitem = Listitem.find(params[:id]) return render :json => listitem end
mu *_*ort 30
我猜你url在模型中设置了一个字符串:
Backbone.Model.extend({
url: '/list_items',
//...
});
Run Code Online (Sandbox Code Playgroud)
这将告诉Backbone完全/list_items用作所有操作的URL.你应该使用一个函数:
url: function() { return '/list_items/' + encodeURIComponent(this.id) }
Run Code Online (Sandbox Code Playgroud)
或使用字符串,urlRoot并让默认url函数添加id:
urlRoot: '/list_items'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6416 次 |
| 最近记录: |