我在this tutorial之后使用Ember CLI和Rails后端设置了一个新的应用程序但是当我为我的某个模型设置路由时,我收到以下错误:
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)
我已经用Google搜索了,但我不知道这意味着什么。我已经检查过以确保我有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还很新,所以我不确定在哪里看。
答案 0 :(得分:5)
我遇到了类似的问题。我只使用了一个差异rabl。
问题在于我的配置:
Rabl.configure do |config|
config.include_json_root = false
end
JSON有效负载应该是包含根属性
内的记录的对象
因此,您需要将rabl配置更改为:
Rabl.configure do |config|
config.include_json_root = true
end
或在root
模板中传递rabl
选项:
collection @orders, root: 'orders'
答案 1 :(得分: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
我甚至没有注意到我的串行器没有被调用。