Данные Ember несовместимы с ответом JSON Rails: обнаружен ресурс с неопределенным типом

Я пытаюсь настроить Ember Data для связи с бэкэндом Rails. Ember успешно вызывает конечную точку, получает как 200, так и некоторые данные ответа. Проблема в том, что Ember не может сопоставить данные ответов с одной из моих моделей Ember, которые я сделал.

Код моей модели:

export default DS.Model.extend({
  user_id: DS.belongsTo('user'),
  transcription: DS.attr('string'),
  transcription_time: DS.attr('date'),
  transcription_date: DS.attr('date'),
  recording_url: DS.attr('string'),
  state: DS.attr('string')
});

Ниже приведено изображение того, как сервер возвращает данные вместе с ошибкой от Ember:

введите описание изображения здесь

Ошибка: Encountered a resource with an undefined type.

Мне не нужно включать created_at или же updated_at в моих моделях Ember я делаю? Кроме того, как Эмбер знает, как подключиться user_id со мной User Эмбер модель? Это то, что вызывает ошибку? Я уточнил user_id в belongTo('user') хоть. Нужно ли явно включать type поле в моем ответе JSON? Это не кажется правильным, хотя.

Я прочитал несколько руководств Ember, включая руководство по моделям и руководство по сериализаторам. Мне не нужно писать собственный JSONAPISerializer, не так ли? Большинство руководств, которые я прочитал, не говорили об этом. Любая помощь и советы будут с благодарностью!

1 ответ

Решение

Ваш ответ JSON должен содержать поле типа, в соответствии со спецификацией JSONAPI. Вот как выглядит JSON из моего приложения rails:

{"data":{"attributes":{"title":"asdf","body":"adsf"},"type":"posts"}}

Используете ли вы Serializer Active Model на стороне рельсов, и вы настроили его для использования рендерера JSONAPI?

Все, что вам нужно сделать, это установить ActiveModelSerializers.config.adapter в инициализаторе:

# config/initializers/jsonapi.rb
ActiveModelSerializers.config.adapter = :json_api

Это должно включать type поле автоматически.

Если у вас все еще есть проблемы, я думаю, что если вы поделитесь своим кодом, я могу помочь.

Другие вопросы по тегам