バックボーンとサーバーでは、ID (api/order/ID/call と api/order/ID/status) の後に異なるエンドポイントでリクエストを送信しました。明らかにさまざまなアクションに応じてこれらを設定する必要があります。モデルの同期を拡張/オーバーライドすることで、ステータスが機能するようになりました。
sync: function(method, model, options){
if (method == 'PUT' || method == 'update') {
model.url = '/venues/orders/' + model.id + '/status';
var jsonData = {};
jsonData.staffid = 1;
jsonData.groupid = 0;
jsonData.statusid = this.get('status.statusid');
//if the options url is set use that otherwise use /status
if( options.url ){
model.url = options.url;
}
options.data = JSON.stringify(jsonData);
}
return Backbone.sync(method, model, options);
}
オプションの url を設定する呼び出し関数があります。
CallToBar: function(el){
log("CallToBar Action");
el.preventDefault();
el.stopPropagation();
var target = $(el.currentTarget);
target.text('Calling...');
var that = this;
this.model.save({}, {
url: '/venues/orders/' + this.model.id + '/call',
data: '',
success: function(){
target.text('Called');
timeout = setTimeout(function() {
if( !$(this.el).find('.additional-options').hasClass('hide') ){
that.orderClicked();
}
target.text('Call to bar');
}, 1500);
}
});
},
理想的には同期/保存/設定を使用して、さまざまなエンドポイントを URL にアタッチする機能が必要です