Emberjs, рельсы - Активный модельный адаптер
У меня есть рельсы API с драгоценным камнем "active_model_serializers".
http://localhost:3000/api/buildings/30.json генерирует для меня это:
{
building:{
id:30,
city_name:"msc",
infrastructure:[
{
id:40,
name:"name 1",
created_at:"2015-07-30T08:26:49.000Z",
updated_at:"2015-07-30T08:26:49.000Z"
},
{
id:69,
name:"name 2",
created_at:"2015-07-30T08:26:50.000Z",
updated_at:"2015-07-30T08:26:50.000Z"
},
{
id:39,
name:"name 3",
created_at:"2015-07-30T08:26:49.000Z",
updated_at:"2015-07-30T08:26:49.000Z"
}
]
}
}
Также я использую EmberJ с ActiveModelAdapter. Но Эмбер ожидает этого:
{
building:{
id:30,
city_name:"msc",
infrastructure:[
40,
69,
39
]
},
infrastructure:[
{
id:40,
name:"name 1",
created_at:"2015-07-30T08:26:49.000Z",
updated_at:"2015-07-30T08:26:49.000Z"
},
{
id:69,
name:"name 2",
created_at:"2015-07-30T08:26:50.000Z",
updated_at:"2015-07-30T08:26:50.000Z"
},
{
id:39,
name:"name 3",
created_at:"2015-07-30T08:26:49.000Z",
updated_at:"2015-07-30T08:26:49.000Z"
}
]
}
Как я могу заставить ember работать со структурой rails json? Спасибо!
2 ответа
Решение
Другой вариант - пойти по пути JSON API.
Я думаю, что это лучший вариант, потому что
- вы начинаете кодировать текущий / будущий формат Ember Data
- яснее отобразить и понять, что происходит с данными
Я написал руководство по адресу http://emberigniter.com/modern-bridge-ember-and-rails-5-with-json-api/ (для Rails 5), но вы наверняка сможете адаптировать его к своей версии Rails
Вам нужно использовать Mixin Embedded Records со стороны Ember.
App.ColorSerializer = DS.ActiveModelSerializer.extend(DS.EmbeddedRecordsMixin, {
attrs: {
foos: {embedded: 'always'}
}
});
Проверьте этот ответ