2016-06-12 8 views
0

Ruby on Rails APIバックエンドを使用するEmber CLIアプリケーションがあります。最初はREST APIを使用してこれを作成し、JSONAPIを使用するように移行しようとしています。これは簡単ですエンバーするレールからのデータを送信するためにEmber/Railsでさまざまなシリアライザを使用してデータを送受信する

- 私はちょうど私がすでに使用していたActiveModelSerializers宝石を更新した、とのようなものであることをエンバーアプリでアダプタとシリアライザを更新しました:

export default DS.JSONAPIAdapter; 

export default DS.JSONAPISerializer; 

問題は、新しいデータフォーマットに応答するために私のRailsアプリケーション全体を書き直す作業がたくさんあるため、EmberからRailsにデータを送信する際にRESTアダプタ/シリアライザを使用したいと考えています(少なくとも、期間)。私はこれを行う方法がわかりません。私はこのようなことを考えていた:

export default DS.JSONAPISerializer.extend({ 
    serialize(snapshot, options){ 
    return DS.RESTSerializer.serialize(snapshot, options); 
    } 
}); 

これは動作しません。誰もこれをしましたか?それを行う良い方法はありますか?

感謝

+0

'DS.RESTSerializer'は' .create() 'でインスタンス化する必要があります。 – Lux

+0

ありがとう@Lux。それでもまだ動作しません - 私は今、 'Uncaught TypeError:未定義の 'lookup'プロパティを読み取ることができません。 – AdamP

+0

DIコンテナから見てください。 – Lux

答えて

0

基本的にDS.RESTSerializerclassですが、serializeはインスタンスメソッドです。だから、シリアライザを.create()する必要があります。

let instance = DS.RESTSerializer.create().serialize(...arguments) 

シリアライザは、DIコンテナにアクセスして、そのコンテナによって初期化されることを想定しているのでしかし、このを動作しません。

DS.RESTSerializer.create(Ember.getOwner(this).ownerInjection()).serialize(...arguments); 
+0

ありがとう。これはエラー '_ember.default.getOwnerは関数ではありません.' – AdamP

+0

あなたは現在のemberバージョンにいませんか?これは[最近変更されました](http://emberjs.com/blog/2016/01/15/ember-2-3-released.html#toc_introducing-owners-and-deprecating-containers)です。あなたが使用できる古いバージョン用の[polyfill](https://github.com/rwjblue/ember-getowner-polyfill)があります。 – Lux

+0

はい、申し訳ありませんが、言及すべきです - APIのアップグレードはすべて1.13から移行の一部です。これはまだ動作していません私は恐れています。polyfillで新しいエラー 'ext.js:173 Uncaught TypeError:プロパティを読み取れません 'undefinedの' modelFor ' – AdamP

関連する問題