使用不同的序列化器在Ember / Rails中发送/接收数据

时间:2016-06-12 22:42:02

标签: ruby-on-rails ember.js

我使用Ruby on Rails API后端获得了一个Ember CLI应用程序。我最初使用REST API构建它,并尝试将其迁移到使用JSONAPI。

要将数据从Rails发送到Ember,这很简单 - 我刚刚更新了我已经使用的ActiveModelSerializers gem,并且更新了Ember应用程序中的适配器和序列化器,如下所示:

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);
  }
});

这不起作用。有没有人这样做过?有没有好办法呢?

非常感谢

1 个答案:

答案 0 :(得分:0)

基本上DS.RESTSerializerclass,但serialize是实例方法。所以你必须.create()序列化器:

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

然而,这个将无法正常工作,因为Serializer确实访问了DI容器,因此期望由容器初始化。您可以像这样手动注入所有者:

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