【问题标题】:Ember.js - Error while processing route if URL hit directlyEmber.js - 如果 URL 直接命中,则处理路由时出错
【发布时间】:2015-01-30 06:36:11
【问题描述】:

我不断从单个对象(用户)的路由处理程序中收到以下错误。如果我单击链接以查看/显示单个对象(用户),它可以正常工作,但是当我在此路由的 url 刷新页面时,我不断收到此错误。

直接访问时出错的URL:

/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

app/router.js

Router.map(function() {
    this.resource('users', function() {
        this.route('show', { path: '/:user_id' });
    });
});

app/routes/users/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。任何帮助将不胜感激!

【问题讨论】:

  • 您能否发布您的“用户”模型、序列化程序和来自服务器的GET /users 响应?
  • 如果你可以让它在 jsbin 中工作就更好了。

标签: ember.js ember-data


【解决方案1】:

您的服务器可能没有为 /users/:id 返回正确的 JSON。

如果您使用RESTAdapter,则从服务器返回的 JSON 应该类似于

user: {
  id: 1,
  other_attrs: '...'
}

当从用户列表输入ShowRoute时,所有用户已经使用store.find('user')方法加载(即通过/users服务器请求加载),因此return this.store.find('user', params.user_id);根本不向服务器发出请求,它只是返回已加载的用户。因此没有错误。

【讨论】:

  • 还可以考虑升级到Ember.Data 1.0.0-beta.14.1 - 此类问题的错误消息更加用户友好
  • 你是对的。我没有为用户/节目正确设置 respond_to 块设置。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-04
  • 2013-09-01
相关资源
最近更新 更多