2014-12-03 3 views
5

Я настраиваю новое приложение с Ember CLI и backend после this tutorial, но когда я установил маршрут для одного из мои модели, я получаю следующую ошибку:Недопустимое полное имя: `model: @ each`, должно быть формы` type: name`

Error while processing route: inks.index Invalid fullName: `model:@each`, must be of the form `type:name` TypeError: Invalid fullName: `model:@each`, must be of the form `type:name` 
at __exports__.default.EmberObject.extend.resolve (http://localhost:4200/assets/vendor.js:16772:17) 
at Object.resolve [as resolver] (http://localhost:4200/assets/vendor.js:16394:25) 
at resolve (http://localhost:4200/assets/vendor.js:14930:32) 
at Object.Container.resolve (http://localhost:4200/assets/vendor.js:14510:16) 
at factoryFor (http://localhost:4200/assets/vendor.js:15013:31) 
at Object.Container.lookupFactory (http://localhost:4200/assets/vendor.js:14617:16) 
at Ember.Object.extend.modelFactoryFor (http://localhost:4200/assets/vendor.js:74810:31) 
at JSONSerializer.extend.extractArray (http://localhost:4200/assets/vendor.js:67710:22) 
at apply (http://localhost:4200/assets/vendor.js:32851:27) 
at superWrapper (http://localhost:4200/assets/vendor.js:32419:15) 

Я искал googled, но я понятия не имею, что это значит. Я проверил, чтобы убедиться, что у меня есть ActiveModelAdapter и Serializer. Модель не сложная:

Мой маршрут app/routes/users/index.js:

import Ember from 'ember'; 

export default Ember.Route.extend({ 
model: function() { 
    return this.store.find('user'); 
} 
}); 

app/router.js:

import Ember from 'ember'; 
import config from './config/environment'; 

var Router = Ember.Router.extend({ 
    location: config.locationType 
}); 

Router.map(function() { 
    this.resource('users'); 
}); 
export default Router; 

и мой app/adapters/application.js является:

import DS from 'ember-data'; 

export default DS.ActiveModelAdapter.extend({ 
    namespace: 'api/v1' 
}); 

Я все еще довольно новый с EmberCLI, поэтому я не уверен, где искать.

ответ

2

Так получилось, что я не использовал ActiveModelSerializers правильно. Поскольку я перечислял всех пользователей в качестве теста, я думал, что он будет сериализован как список сериализованных данных, определенных в UserSerializer.

Я делал это в моем контроллере:

def index 
    @users = User.all 
    render json: @users 
end 

Когда я должен был сделать это в соответствии с Документами (here):

def index 
    @users = User.all 
    render json: @users, each_serializer: UserSerializer 
end 

Я даже не заметил мой Serializer WASN не называется.

5

Я придерживался аналогичной проблемы. Только одно различие я использовал rabl.

Проблема была с моей конфигурации RABL:

Rabl.configure do |config| 
    config.include_json_root = false 
end 

Ember.js documentation говорит нам:

The JSON payload should be an object that contains the record inside a root property

Таким образом, вы должны изменить конфигурацию RABL на:

Rabl.configure do |config| 
    config.include_json_root = true 
end 

или, проход root опция внутри rabl шаблон:

collection @orders, root: 'orders'