我有一个使用主干的rails应用程序。在控制台中,我可以创建一个集合,从服务器(3)获取文档,我通过检查长度来确认这些文档。
docs =新Docs(); docs.fetch(); docs.length 3.
去拿一份那些文件
d1 = docs.at(0)对象{ cid= "c3“,changed={…},attributes={.},more.}
毁了医生
删除http: localhost:3000/docs/1 204NoContent23ms jquery.js?body=1 (第8215行)对象{ readyState= 1,setRequestHeader=function(),getAllResponseHeaders=function(),more.}
检查文档的长度
>>> docs.length
2创建一个新集合
docz =新Docs();
从服务器获取文档。注意"304未修改的消息“
docz.fetch();获取http:// localhost:3000/docs304未修改的31 Not jquery.js?body=1 (第8215行)对象{ readyState= 1,setRequestHeader=function(),getAllResponseHeaders=function(),more.}
检查长度。它是3,当我期望它是2。
>>> docz.length
3我不知道为什么当我打电话给破坏时,如果有3条记录的话,我会收到一条没有内容的消息
204 No Content
23ms当我从数据库中检索记录时,访问数据没有问题。
d.get('title')
>>>"diet book"我在模型上设置了一个url,所以我应该能够删除我认为的各个记录
url : function() {
var base = 'docs';
if (this.isNew()) return base;
return base + (base.charAt(base.length - 1) == '/' ? '' : '/') + this.id;
},但是,我也不能删除通过集合进行的docs.at(0).destroy具有相同的效果。
这是我在rails控制器中的销毁功能。
class DocsController < ApplicationController
respond_to :json
....
def destroy
respond_with Doc.find(params[:id])
end
end 模型
class Doc < ActiveRecord::Base
attr_accessible :keywords, :text, :title
end在这篇文章上发表评论的一个人指出,当我调用时,我应该销毁一些东西,但是我认为对被破坏的对象调用Update
d.destroy() #should destroy d, shouldn't it?这就是我从医生那里了解到的
book.destroy({success: function(model, response) {
...
}});实际上,当我对一个对象调用save()时,它会将对象保存到数据库中
d.save(); #this works, so why not d.destroy();发布于 2013-01-09 03:44:18
当您在主干代码中执行此操作时:
d.destroy();您将触发对服务器的破坏请求,客户端模型将被销毁和清理。您的服务器代码必须通过销毁服务器端模型来处理销毁请求;您的destroy控制器不会这样做:
def destroy
respond_with Doc.find(params[:id])
end所做的就是从数据库中提取适当的Doc并将其发送回客户端:您的destroy控制器需要销毁服务器端模型。您需要调整控制器方法以包括:
doc = Doc.find(params[:id])
doc.destroy对find和destroy调用进行权限检查、错误检查和异常处理也可能是个好主意。
https://stackoverflow.com/questions/14227264
复制相似问题