Model Spine.js模型:仅first.save()应创建新资源,以下所有内容应更新
当我创建并.save()一条新记录时,我的Spine.js模型会向服务器发送一个POST请求,将其添加到数据库中。 没什么大不了的。。。 但是,当我向同一个模型实例发出另一个.save()时,我希望Spine.js发送一个PUT请求,只是更新它的数据 我怎样才能做到这一点 我的模型是这样的:Model Spine.js模型:仅first.save()应创建新资源,以下所有内容应更新,model,save,spine.js,Model,Save,Spine.js,当我创建并.save()一条新记录时,我的Spine.js模型会向服务器发送一个POST请求,将其添加到数据库中。 没什么大不了的。。。 但是,当我向同一个模型实例发出另一个.save()时,我希望Spine.js发送一个PUT请求,只是更新它的数据 我怎样才能做到这一点 我的模型是这样的: class App.MeetingMinutes extends Spine.Model @configure 'MeetingMinutes', 'subject', 'some', 'more',
class App.MeetingMinutes extends Spine.Model
@configure 'MeetingMinutes', 'subject', 'some', 'more', 'attributes'
@belongsTo 'archive', 'Archive'
@extend Spine.Model.Ajax
@url: '#' # only dynamically scoped from Entries controller
@setArchive: ( _id ) ->
@url = '/archives/' + _id + '/meeting_minutes'
(将id列添加到@configure也不起作用)
在Rails控制器(创建操作)中,我将整个对象作为JSON返回
format.json { render :json => @meeting_minutes, :status => :created }
这就是我使用它的原因:
mm = new App.MeetingMinutes({subject: 'subject'})
mm.save() // POST
mm.subject = 'changed subject!'
mm.save() // another POST
mm.isNew() // true (obviously :/)
有什么想法吗?不确定你是否把这个问题整理好了,但这听起来像是我不久前遇到的一个问题。我认为您需要将save分配给变量,因此:
mm = new App.MeetingMinutes({subject: 'subject'})
mm = mm.save()
mm.subject = 'changed subject!'
mm = mm.save()
第二个保存应该是一个PUT而不是POST。现在我不清楚这是否是预期用途,或者只是一种变通方法,但它似乎有效。希望能有所帮助。你对它的描述就是它对我的作用。第一次保存后,您可以检查isNew()在模型上返回的内容吗?这应该是错误的。如果这是真的,它将发布另一个帖子。你的模型上有ID栏吗?谢谢你的回复!我刚刚在我的帖子中添加了更多的信息。如果我是你,我会在第一次保存之前添加一个调试器,并逐步完成所有操作。您需要确保在spine中调用changeID,以将mm记录的ID设置为服务器上生成的ID。一旦发生这种情况,该记录就不应再标记为isNew()。只要一步一步地看它是否发生。若否,原因为何。