Ember:加载路径时出错:TypeError:对象函数...没有方法'create'

时间:2014-02-09 20:01:07

标签: javascript ruby-on-rails ember.js ruby-on-rails-4

我接手了一个稍微破碎的余烬项目,但我甚至无法获得最基本的模型。我已经注释掉了前一个项目的所有代码,基本上只有这个:

App = Ember.Application.create();

App.ApplicationAdapter = DS.FixtureAdapter.extend

App.Admin = DS.Model.extend(
  userName: DS.attr("string")
  roles: DS.attr("string")
)

App.Admin.FIXTURES = [
  {
    userName: 'Tester One'
    roles: 'six-sided die'
  }
  {
    userName: 'Tester Two'
    roles: 'four-sided die'
  }
]

App.Router.map ->
  @route 'about', { path: '/about' }
  @resource 'admins', { path: '/admins' }

App.AdminsRoute = Ember.Route.extend
  model: ->
    return @store.find('admin')

它是在Rails 4.0.1应用程序内部构建的(运行ember-rails的0.14.1和ember-source的1.3.2)。当我转到根页面时,我看到了正确的余烬模板。当我点击about的链接时,我会转到about模板。但是当我点击admins或转到/admins时,我没有渲染admins模板(这只是一些静态文本),而是在我的js控制台中收到此错误:< / p>

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;
    Class.PrototypeMixin.o...<omitted>... } has no method 'create'

后面是ember代码中的一堆回溯。我没有在任何地方调用create,并且它为应用程序中的其他模型提供了类似的错误(我已经注释掉了)。我试图在ember指南之后构建这个可以肯定的东西。

Ember检查员使用admins上的AdminsRouteAdminsController模板看到名为admins的{​​{1}}路线。

简单地说,我不知道如何进一步调试它。

我已经尝试了几个版本的ember / -data,但目前我正在使用1.4.0-beta.6和1.0.0-beta.6并且仍然出现此错误。

谢谢!

4 个答案:

答案 0 :(得分:3)

将coffeescript与ember一起使用时,这是一个常见的错误,你必须更新

App.ApplicationAdapter = DS.FixtureAdapter.extend

App.ApplicationAdapter = DS.FixtureAdapter.extend()

答案 1 :(得分:0)

可能是缺少的逗号吗?

App.Admin.FIXTURES = [
  {
    userName: 'Tester One'
    roles: 'six-sided die'
  }
  {
    userName: 'Tester Two'
    roles: 'four-sided die'
  }
]

App.Admin.FIXTURES = [
  {
    userName: 'Tester One'
    roles: 'six-sided die'
  },
  {
    userName: 'Tester Two'
    roles: 'four-sided die'
  }
]

答案 2 :(得分:0)

尝试为灯具中的模型添加唯一ID

答案 3 :(得分:0)

我怀疑升级过程可能会出现问题,这是商店的不完善实施。

store.coffee只读过:

App.ApplicationAdapter = DS.FixtureAdapter.extend

我把它改为:

App.Store = DS.Store.extend
  adapter:DS.FixtureAdapter

它工作正常(虽然我确实必须添加id,正如@chopper所说)。看到我们将为商店使用api,我会坚持这个变种,虽然@ marcio-junior的建议也有效!谢谢!