I have this Rest adapter
//app/adapters/application.js
import Ember from 'ember';
import DS from 'ember-data';
export default DS.RESTAdapter.extend({
//defaultSerializer: 'JSONSerializer',
host: 'http://localhost:8081/index.php',
namespace: 'v1',
});
I can post to my API fine. The problem is, when I have validation error I cannot receive them in my model. I create a model in response to data sent from component via SendAction() and here is signup route
import Ember from 'ember';
export default Ember.Route.extend({
actions:{
signUp(userInfo){
let route = this;
let user = this.store.createRecord('user', userInfo);
user.save().then(function(){ //success
}, function(error){ //error
alert(error); // I always get --> Error: The adapter rejected the commit because it was invalid
});
}
},
});
I always get " Error: The adapter rejected the commit because it was invalid" no matter what I do.
Here is my API error response:
[{"field":"first_name","message":"First Name cannot be blank."},{"field":"last_name","message":"Last Name cannot be blank."},{"field":"mobile","message":"Mobile cannot be blank."},{"field":"gender","message":"Gender cannot be blank."},{"field":"username","message":"Username cannot be blank."},{"field":"password","message":"Password cannot be blank."},{"field":"secret_word","message":"Secret Word cannot be blank."},{"field":"created_at","message":"Created At cannot be blank."},{"field":"updated_at","message":"Updated At cannot be blank."}]
I have tried everything I could find in google (SO, Ember forum et al) but with no avail. Here is my latest attempt to get it work.
import Ember from 'ember';
import DS from 'ember-data';
export default DS.RESTAdapter.extend({
//defaultSerializer: 'JSONSerializer',
host: 'http://localhost:8081/index.php',
namespace: 'v1',
parseErrorResponse: function(responseText) {
let json = responseText;
let jsonapiError;
try {
json = Ember.$.parseJSON(responseText);
let errors = [];
for(let i=0; i<json.length; i++)
{
let obj = json[i];
let attrName = obj.field;
let message = obj.message;
errors.push({"attribute":attrName, "message":message});
}
jsonapiError = {"errors":errors};
} catch (e) {}
return jsonapiError;
},
});
So far I have run out of ideas and would appreciate any pointer or help. TIA, Stefano