Ember-Rails"无法阅读财产'延伸'未定义"

时间:2014-06-16 20:22:06

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

我正在使用Ember-Rails构建一个带有Rails API的Ember前端应用程序。我一直在努力实现身份验证,我得出以下错误: 尝试按如下方式扩展路线时Cannot read property 'extend' of undefined

App.AdminRoute = App.AuthenticateRoute.extend({
    model: function(params) {
        return this.store.find('user', params.id);
    },
});

我的AuthenticateRoute定义如下:

App.AuthenticateRoute = Ember.Route.extend({
    //yada yada
});

我或多或少地遵循了http://www.embercasts.com/episodes/client-side-authentication-part-2

上的指南

我不确定为什么这不起作用,但我注意到我的AuthenticateRoute 可以从其他路线扩展,我觉得非常奇怪。

1 个答案:

答案 0 :(得分:2)

事实证明,正如我们大多数人所知,Ember-Rails预先编译了所有这些文件而没有看到它(使用我认为的理发宝石)。我没有想到的是,当它结合所有这些文件时,它(据我所知)将它们按字母顺序排列。因此,在AdminRoute被声明之前,我的AuthenticateRoute被声明为扩展AuthenticateRoute,从而产生错误。我还不确定如何解决这个问题 -

  • 天真的解决方法是简单地将文件名从admin_route.js更改为zadmin_route.js,因此它位于authenticate_route.js之后,但出于显而易见的原因,这并不合适。
  • 或者,也可以通过关闭标志来关闭Ember-Rails中的预编译。 (见this

如果有人有更好的选择,请在下面发表评论,否则我会在遇到解决方案时更新此内容。