запись была сохранена на сервере, но в ответе нет идентификатора и в вашей записи тоже нет - PullRequest
0 голосов
/ 19 сентября 2018

Со вчерашнего дня я сталкиваюсь с этой ошибкой. Ошибка: сбой подтверждения: 'todo' был сохранен на сервере, но в ответе нет идентификатора и вашей записи тоже.

Я знаю этодолжен прийти из app / serializers / todo.js или из моего app / routs / application.jsbut после просмотра нескольких форумов, я должен задать вопрос эксперту emberJs dev, так как я новичок: 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>

ИтакМой объект создан, но не сохранен.Когда я смотрю в свой ember Inspector, я вижу, что у каждого создаваемого мной объекта есть идентификатор, но поле заголовка имеет значение null или "".

Это todoApp с Rails-API в качестве back и Ember какспереди.

Кто-нибудь видит, что здесь не так?

1 Ответ

0 голосов
/ 19 сентября 2018

Ваш сериализатор - проблема.Если вы используете несколько стандартную настройку API, вам вообще не нужен сериализатор.Я бы удалил это первым.

Вероятно, что ваш API не настроен на получение документов JSON-API, которые имеют следующую структуру:

{
  id: <id>,
  type: <type>,
  attributes: {
    name: <string>, 
    created: <date>,
    complete: <boolean>
   }
 }

Поэтому вы должны либо установить гем json-api наbackend или переключите адаптер для использования DS.RestSerializer, который имеет абсолютно плоскую структуру данных.

...