自昨天以来,我一直遇到此错误,错误:断言失败:“待办事项”已保存到服务器,但是响应没有ID,您的记录也没有。
我知道它应该来自app / serializers / todo.js或我的app / routes / application.js,但是在进入somes论坛后,我不得不问专家emberJs开发人员这个问题,因为我是新手:smiley :
这里是my app/serializers/todo.js
:
import DS from 'ember-data';
export default DS.JSONSerializer.extend({
serialize: function(record, options) {
var json = this._super.apply(this, arguments); // Get default serialization
json.id = record.id; // tack on the id
return json;
}
});
还有我的app/routes/application.js
import Route from '@ember/routing/route';
export default Route.extend({
model(){
return this.store.findAll('todo');
},
actions: {
createtodo: function() {
var titleInput = this.get("newTitle")
var todo = this.store.createRecord('todo', {
title: titleInput,
isCompleted: false
});
this.set('newTitle', '');
todo.save();
}
}
});
createtodo动作的触发方式app/templates/application.hbs
:
{{input type="text" id="new-todo" value=newTitle}}
<button {{action "createtodo"}}>Save</button>
因此我的objec已创建但未保存。当我查看余烬检查器时,我看到我创建的每个对象都有一个ID,但标题字段为null或“”。
这是一个TodoApp,背面为Rails-API,正面为Ember。
有人看到这里出什么问题了吗?
答案 0 :(得分:0)
您的序列化器有问题。如果您使用的是某种标准的API设置,则根本不需要串行器。我先删除它。
可能发生的情况是您的API未设置为接收JSON-API文档,其结构如下:
{
id: <id>,
type: <type>,
attributes: {
name: <string>,
created: <date>,
complete: <boolean>
}
}
因此,您应该在后端安装json-api gem或切换适配器以使用DS.RestSerializer
,它具有完全平坦的数据结构。