【发布时间】:2012-06-15 04:37:06
【问题描述】:
我有一个要销毁的主干模型,但没有随请求发送任何参数,因此服务器返回“未找到删除 404”错误。
我承认我的结构有点奇怪,因为我根据它们是否已经在列表中来创建/销毁这些项目。
var list_item = new MyApp.Models.ListItem({item_id: this.model.id, group_id: this.model.group_id}); if($(e.currentTarget).hasClass('add')){ 列表项。保存(列表项,{ 成功:函数(响应){ this.model.attributes. addedtolist_id = response.id 控制台.log(this.model); }, 错误:函数(){ alert('无法保存项目'); } }); } else if($(e.currentTarget).hasClass('remove')) { list_item.id=this.model.addedtolist_id; list_item.attributes.id = this.model.addedtolist_id; 控制台.log(list_item); list_item.destroy({ 成功:函数(){ 警报(“删除”); }, 错误:函数(){ alert('不能取消选中'); } }); }list_item 在销毁之前的控制台输出是
但是当我查看与删除请求一起发送的标头时,我没有发送任何参数。
-----------更新参数正在发送,404仍在返回--------------
根据 Yaroslav 的建议,我在 destroy 方法中添加了一个“标题”,但我的 rails 控制器仍然返回 DELETE 404 not found 错误。我只是想退回列表项,以确保在销毁它之前得到正确的列表项。
我的控制器是
定义破坏 listitem = Listitem.find(params[:id]) 返回渲染:json => listitem 结尾【问题讨论】:
-
@muistooshort 我已经更新了格式并添加了缺少的大括号。希望那会更好。
-
它的
id是从哪里得到的?我在new ListItem中没有看到它。 DELETE 请求的 URL 是什么样的? -
它在
new ListItem中没有id,因为那是在创建listitem 的时候,所以它还没有id。这就是我在destroy之前创建ID 的原因。网址是DELETE http://10.1.1.7:3000/list_items 404 (Not Found)。我对 index 和 create 方法使用相同的 url,这没有问题。 -
谁建立了那个 URL?
ListItem中有url或urlRoot吗? -
@muistooshort,该 URL 是在我的主干 ListItem 模型中定义的,因此它与
fetch和save上使用的 URL 相同,可以正常工作。
标签: ruby-on-rails-3 backbone.js destroy