Ember-Rails Не удается прочитать свойство «extend» неопределенного

Я использую Ember-Rails для создания клиентского приложения Ember с API Rails для бэкенда. Я работал над реализацией аутентификации и получил следующую ошибку: 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 может быть расширен из других маршрутов, что я нахожу крайне странным.


person Ruben Martinez Jr.    schedule 16.06.2014    source источник


Ответы (1)


Оказывается, как известно большинству из нас, Ember-Rails предварительно компилирует все эти файлы без вашего ведома (используя то, что я считаю драгоценным камнем Barber). О чем я не подумал, так это о том, что при объединении всех этих файлов (насколько я могу судить) они располагаются в алфавитном порядке. Таким образом, мой AdminRoute был объявлен как расширение AuthenticateRoute еще до того, как AuthenticateRoute был объявлен, что привело к ошибке. Я еще не уверен, как это решить...

  • Наивное решение состоит в том, чтобы просто изменить имя файла с admin_route.js на zadmin_route.js, чтобы оно шло после authenticate_route.js, хотя по очевидным причинам это нежелательно.
  • В качестве альтернативы также можно отключить предварительную компиляцию в Ember-Rails, установив флажок. (см. это)

Если у кого-то есть лучшая альтернатива, пожалуйста, прокомментируйте ниже, иначе я обновлю это, когда найду решение.

person Ruben Martinez Jr.    schedule 16.06.2014