我有一个rails后端,根据JSON API标准(jsonapi-resources gem)提供数据。我有两个模型:Contact和PhoneNumber。
class Contact < ApplicationRecord
has_many :phone_numbers
end
class PhoneNumber < ApplicationRecord
belongs_to :contact
end
这是API端点的JSON响应。
{
"data": [
{
"id": "6",
"type": "phone-numbers",
"links": {
"self": "http://localhost:3000/phone-numbers/6"
},
"attributes": {
"name": "byeworld",
"phone-number": "9212098"
},
"relationships": {
"contact": {
"links": {
"self": "http://localhost:3000/phone-numbers/6/relationships/contact",
"related": "http://localhost:3000/phone-numbers/6/contact"
}
}
}
}
]
}
这些是我的Ember模特:
联系方式:
import DS from 'ember-data';
export default DS.Model.extend({
nameFirst: DS.attr('string'),
nameLast: DS.attr('string'),
email: DS.attr('string'),
twitter: DS.attr('string'),
phoneNumbers: DS.hasMany('phone-number', {async: true, inverse: 'contact'})
});
电话号码:
import DS from 'ember-data';
export default DS.Model.extend({
name: DS.attr('string'),
phoneNumber: DS.attr('string'),
contact: DS.belongsTo('contact', {async: true, inverse: 'phoneNumbers'})
});
这是我的路线处理程序:
import Ember from 'ember';
export default Ember.Route.extend({
model(params) {
return this.store.findRecord('contact', params.contact_id, {include: "phone-numbers"});
},
(...)
});
我无法通过以下方式访问模板上的联系人的电话号码:
{{#each model.phoneNumbers as |phone|}}
{{phone.name}}
{{/each}}
此外,电话号码的数据存在于ember控制台中。我错过了什么?
答案 0 :(得分:0)
model.PhoneNumbers
=&gt; model.phoneNumbers
如果这不仅仅是这个错字,请尝试从JSON API适配器/序列化器扩展模型序列化器/适配器(或者如果所有模型都使用它,则在应用程序序列化器/适配器上执行):
import DS from 'ember-data';
export default DS.JSONAPIAdapter.extend({});
和
import JSONAPISerializer from 'ember-data/serializers/json-api';
export default JSONAPISerializer.extend({});
答案 1 :(得分:0)
ember-data版本2.14.3中存在未知问题。所以请将你的ember-data版本降级到2.13.2。这可能会解决你的问题。
请参阅此ember-data open issue - https://github.com/emberjs/data/issues/4942