2014-12-03 217 views
5

我使用Ember CLI和一个Rails后端设置了一个新的应用,跟在this tutorial之后,但是当我为其中一个我收到以下错误消息:无效的fullName:`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) 

我已经搜索了一下,但我不知道它的含义。我已经检查过,以确保我有ActiveModelAdapter和Serializer。该模型并不复杂:

我的路线是app/routes/users/index.js

​​

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 

我甚至没有注意到我的串行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' 
相关问题