新しいレコードを作成して保存すると、Spine.jsモデルがサーバーにPOSTリクエストを送信して追加しますデータベースに転送します。 大したことはありません... 同じモデルインスタンスに別の.save()を発行すると、Spine.jsがデータを更新するだけのPUT要求を送信します。Spine.jsモデル:最初の.save()のみ新しいリソースを作成する必要があります。次のすべてを更新する必要があります
どうすればこの問題を解決できますか? (アクションを作成する)私は全体のオブジェクトを返す私のRailsのコントローラで
(@configureにidカラムを追加すると、いずれかの動作しません)
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'
:
これは私のモデルがどのように見えるかです
mm = new App.MeetingMinutes({subject: 'subject'})
mm.save() // POST
mm.subject = 'changed subject!'
mm.save() // another POST
mm.isNew() // true (obviously :/)
:JSON
format.json { render :json => @meeting_minutes, :status => :created }
そして、それは私がそれを使用しているものだとして、
アイデア?
あなたがそれを表現する方法は、それが私にとってどのように機能するかです。最初の保存後にモデル上でisNew()が返す値を確認できますか?これは誤っているはずです。それが本当であれば、別のPOSTを発行します。あなたのモデルにID列がありますか? – SpoBo
あなたの返信ありがとう!私はちょうど私の投稿にいくつかの情報を追加しました。 – metafoo
もし私があなただったら、最初の保存の前にデバッガを追加し、すべてのステップを実行します。 changeIDがspineで呼び出されて、mmレコードのIDをサーバー上で生成されたIDに設定する必要があります。それが起こると直ちに、レコードはもはやisNew()としてマークされません。ちょうどステップスルーし、それが起こるかどうかを確認してください。もしそうでなければ、なぜ。 – SpoBo