0

当我创建并 .save() 一个新记录时,我的 Spine.js 模型向服务器发送一个 POST 请求以将其添加到数据库中。没什么大不了的......但是当我向同一个模型实例发出另一个 .save() 时,我希望 Spine.js 发送一个 PUT 请求只是更新它的数据。

我怎样才能做到这一点?

这就是我的模型的样子:

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 :/)

有任何想法吗?

4

1 回答 1

1

不确定你是否得到了这个排序,但这听起来像是我不久前遇到的一个问题。我认为您需要将保存分配给变量,因此:

mm = new App.MeetingMinutes({subject: 'subject'})
mm = mm.save()
mm.subject = 'changed subject!'
mm = mm.save()

第二次保存应该是 PUT 而不是 POST。现在我不清楚这是预期的用途还是只是一种解决方法,但它似乎有效。希望能帮助到你。

于 2012-04-22T23:58:14.913 回答