如何配置Ember数据以使用Rails后端?

时间:2014-04-02 10:05:17

标签: ruby-on-rails ember.js

首先,我知道这应该非常简单,许多文档似乎都回答了我的问题。问题是,我已经尝试了一切,但我无法使其发挥作用。

所以我正在尝试开始我的第一个Ember应用程序。

我已经创建了一个新的Rails应用程序,添加了ember-rails Gem,运行了ember:bootstrap和ember:install --head,这就是我的设置现在的样子:

DEBUG: ------------------------------- ember.js?body=1:3883
DEBUG: Ember      : 1.7.0-beta.1+canary.271940eb ember.js?body=1:3883
DEBUG: Ember Data : 1.0.0-beta.7+canary.20adb1d5 ember.js?body=1:3883
DEBUG: Handlebars : 1.3.0 ember.js?body=1:3883
DEBUG: jQuery     : 1.11.0 ember.js?body=1:3883
DEBUG: ------------------------------- 

现在,我正在尝试从rails API中抓取一些记录并显示它们。

我已经使用activeModel序列化程序配置了我的后端,并且我已经检查了它正确的结果集。

我的store.js.coffee我(我很确定问题所在)如下:

App.ApplicationAdapter = DS.ActiveModelAdapter.extend()

我总是收到这个错误:

Error while loading route: TypeError: Object function () {
        var Class = makeCtor(), proto;
        Class.ClassMixin = Mixin.create(this.ClassMixin);
        Class.PrototypeMixin = Mixin.create(this.PrototypeMixin);

        Class.ClassMixin.ownerConstructor = Class;
        Cl...<omitted>... } has no method 'create'
    at instantiate (http://app.dev/assets/ember.js?body=1:46251:26)
    at lookup (http://app.dev/assets/ember.js?body=1:46117:19)
    at Object.Container.lookup (http://app.dev/assets/ember.js?body=1:45792:16)
    at EmberObject.extend.controllerFor (http://app.dev/assets/ember.js?body=1:38264:32)
    at EmberObject.extend.setup (http://app.dev/assets/ember.js?body=1:37790:31)
    at handlerEnteredOrUpdated (http://app.dev/assets/ember.js?body=1:40938:36)
    at http://app.dev/assets/ember.js?body=1:40907:18
    at forEach (http://app.dev/assets/ember.js?body=1:41956:54)
    at setupContexts (http://app.dev/assets/ember.js?body=1:40906:9)
    at finalizeTransition (http://app.dev/assets/ember.js?body=1:41076:9) 

有什么想法吗?

谢谢

1 个答案:

答案 0 :(得分:1)

我最近在将我的Ember应用程序连接到rails后端时遇到了同样的问题。我收到此错误的原因是因为我发送给ember的JSON数据不是Ember所期望的。确保您获得的数据集可以转换为您在ember中定义的模型。

例如: 如果进来的数据如下:

{
  contacts: [
    {name:"contact1"....
    }, ...
  ],
  buildings: [
    {...
    }, ...
  ]
}

然后,ember将期望有一个联系模型和建筑模型。此外,请确保如果在ember中定义没有任何属性的模型,则会正确关闭它。我也碰到了那个。

例如:

App.Contact = DS.Model.extend

需要

App.Contact = DS.Model.extend()

如果ember模型没有属性。