我一直从单个对象(用户)的路由处理程序中获得以下错误。如果我单击链接以查看/显示单个对象(用户),它可以正常工作,但是当我在此路由刷新页面时,我不断收到此错误。
直接访问时导致错误的网址:
/users/:user_id
控制台中的错误消息:
Error while processing route: users.show Assertion Failed: Expected an
object as `data` in a call to `push`/`update` for ember-app@model:user:,
but was undefined Error: Assertion Failed: Expected an object as `data`
in a call to `push`/`update` for ember-app@model:user: , but was undefined
应用程序/ router.js
Router.map(function() {
this.resource('users', function() {
this.route('show', { path: '/:user_id' });
});
});
应用程序/路由/用户/ show.js
export default Ember.Route.extend({
model: function(params) {
console.log('show route model hook'); //Hook firing on refresh
return this.store.find('user', params.user_id);
}
});
我使用的是Ember 1.8.1和Ember-Data 1.0.0-beta.12。任何帮助将不胜感激!
答案 0 :(得分:4)
您的服务器可能无法为/users/:id
返回正确的JSON。
如果您使用的是RESTAdapter
,则从服务器返回的JSON应该类似于
user: {
id: 1,
other_attrs: '...'
}
从用户列表输入ShowRoute
时,所有用户都已使用store.find('user')
方法加载(即通过/users
服务器请求加载),因此return this.store.find('user', params.user_id);
不提出请求到服务器,它只返回已经加载的用户。因此没有错误。