Sha256: f126efd91458344c9dc1528e85b3758c5ea5f46e6c04539ab1fc26877fa44e14
Contents?: true
Size: 1.66 KB
Versions: 1
Compression:
Stored size: 1.66 KB
Contents
(function() { var methodMap = { 'create': 'POST', 'update': 'PUT', 'delete': 'DELETE', 'read' : 'GET' }; var getUrl = function(object) { if (!(object && object.url)) return null; return _.isFunction(object.url) ? object.url() : object.url; }; var urlError = function() { throw new Error("A 'url' property or function must be specified"); }; Backbone.sync = function(method, model, options) { var type = methodMap[method]; // Default JSON-request options. var params = _.extend({ type: type, dataType: 'json', beforeSend: function( xhr ) { var token = $('meta[name="csrf-token"]').attr('content'); if (token) xhr.setRequestHeader('X-CSRF-Token', token); model.trigger('sync:start'); } }, options); if (!params.url) { params.url = getUrl(model) || urlError(); } // Ensure that we have the appropriate request data. if (!params.data && model && (method == 'create' || method == 'update')) { params.contentType = 'application/json'; var data = {} if(model.paramRoot) { data[model.paramRoot] = model.toJSON(); } else { data = model.toJSON(); } params.data = JSON.stringify(data) } // Don't process data on a non-GET request. if (params.type !== 'GET') { params.processData = false; } // Trigger the sync end event var complete = options.complete; options.complete = function(jqXHR, textStatus) { model.trigger('sync:end'); if (complete) complete(jqXHR, textStatus); }; // Make the request. return $.ajax(params); } }).call(this);
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
rails-backbone-0.5.5 | vendor/assets/javascripts/backbone_rails_sync.js |