Skip to content

Instantly share code, notes, and snippets.

@sescobb27
Last active August 29, 2015 14:23
Show Gist options
  • Save sescobb27/5becc19ba451a18f5e15 to your computer and use it in GitHub Desktop.
Save sescobb27/5becc19ba451a18f5e15 to your computer and use it in GitHub Desktop.
// /store/route.js
import Ember from 'ember';
export default Ember.Route.extend({
model: function() {
var orderOptions = {
type: 'subscription',
status: '13'
};
return Ember.RSVP.hash({
plans: this.store.find('plan'),
order: this.store.createRecord('order', orderOptions)
});
}
});
import DS from 'ember-data';
// ember-model-validator
import Validator from '../mixins/model-validator';
var attr = DS.attr;
export default DS.Model.extend(Validator, {
plan: DS.belongsTo('plan'),
validations: {
plan: {
presence: {
message: 'Please select a plan'
}
}
}
});
// /store/checkout/route.js
import Ember from 'ember';
var debug = Ember.Logger.debug;
export default Ember.Route.extend({
persistOrder: function () {
debug('persistOrder');
var order = this.get('currentModel.order');
var deferred = new Ember.RSVP.defer();
/*
if validate fails set order as isNew == false and isDirty == true
so when validate pass it issue a PUT request instead of a POST request
even though order doesn't has id, how can I force a POST request?
*/
if (order.validate()) {
if (!order.get('id')) {
return order.save().then(deferred.resolve);
}
deferred.resolve();
} else {
this.controller.set('orderErrors', order.get('errors.content'));
deferred.reject();
}
return deferred.promise;
},
_addToCart: function (currentProduct) {
var order = this.get('currentModel.order');
this.persistOrder()
.then(function() {
...
})
.catch(function(err) {
debug('error caught', err);
throw err;
});
},
actions: {
addToCart: function addToCart(currentProduct) {
this._addToCart(currentProduct);
}
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment