Rails API に関連付けられた Ember アプリがあります。
私のモデルは次のように定義されています:
NewsCMS.NewsItem = DS.Model.extend({
title: DS.attr('string'),
date: DS.attr('date'),
body_html: DS.attr('string')
});
アプリが起動すると、現在のモデルを正常に取得して表示しますが、新しい NewsItem を作成し、そのアイテムが API から返されると、エラーが発生します。
キャッチされないエラー: アサーションに失敗しました: サーバーはキー body_html のハッシュを返しましたが、そのマッピングがありません
モデルは Rails API に正常に永続化されているため、問題は明らかに新しく作成されたオブジェクトの逆シリアル化にありますが、ブレークポイントを使用しています。
Rails API の index アクションによって返された初期モデル ハッシュの構造と、その create アクションによって返された単一のモデル ハッシュの構造を比較すると、それらは同一であるのに、Ember が新しく作成されたモデルを窒息させているのはなぜですか。問題のないモデル?
例外の発生場所を見ると、ここにあることがわかります。
if (!sideloadedType) {
sideloadedType = this.sideloadMapping.get(prop);
if (typeof sideloadedType === 'string') {
sideloadedType = get(Ember.lookup, sideloadedType);
}
Ember.assert("Your server returned a hash with the key " + prop + " but you have no mapping for it", !!sideloadedType);
}
スタックは次のようになります。
Ember.assert (ember.js:52)
DS.JSONSerializer.DS.Serializer.extend.sideload (ember-data.js:6482)
DS.JSONSerializer.DS.Serializer.extend.extract (ember-data.js:6424)
superWrapper (ember.js:946)
DS.Adapter.Ember.Object.extend.didCreateRecord (ember-data.js:6730)
DS.RESTAdapter.DS.Adapter.extend.createRecord.ajax.success (ember-data.js:7625)
RunLoop._prev (ember.js:4156)
Ember.handleErrors (ember.js:410)
invoke (ember.js:4154)
tryable (ember.js:4343)
Ember.tryFinally (ember.js:1101)
Ember.run (ember.js:4347)
DS.RESTAdapter.DS.Adapter.extend.createRecord.ajax.success (ember-data.js:7624)
jQuery.Callbacks.fire (jquery.js:1038)
jQuery.Callbacks.self.fireWith (jquery.js:1149)
done (jquery.js:8075)
jQuery.ajaxTransport.send.callback (jquery.js:8599)