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'

(@configure に id 列を追加しても機能しません)

私の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()

2 回目の保存は、POST ではなく PUT にする必要があります。これが意図した使用法なのか、単なる回避策なのかはわかりませんが、うまくいくようです。それが役に立てば幸い。

于 2012-04-22T23:58:14.913 に答える