Ember.js错误:在使用ember-data保存记录时,没有找到'id'型号 [英] Ember.js Error: No model was found for 'id' while saving record using ember-data

查看:99
本文介绍了Ember.js错误:在使用ember-data保存记录时,没有找到'id'型号的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在开发简单的CRUD应用程序在 Ember.js Ruby on Rails

I am developing simple CRUD application in Ember.js and Ruby on Rails

版本:

DEBUG: Ember      : 1.6.0-beta.3 ember.js?body=1:3917
DEBUG: Ember Data : 1.0.0-beta.7+canary.f482da04 ember.js?body=1:3917
DEBUG: Handlebars : 1.3.0 ember.js?body=1:3917
DEBUG: jQuery     : 1.11.0 

Ruby on Rails 4.0.3

Ruby on Rails 4.0.3

我正在使用

I am using Railscasts tutorial pretty good, but some things have changed a lot (e.g. ember-data).

浏览器Ember教程github源

-

当我保存记录时,会抛出2个例外:

Error: No model was found for 'id'

  at new Error                                   (native)
  at Error.EmberError                            (http://localhost:3000/assets/ember.js?body=1:2979:23)
  at Ember.Object.extend.modelFor                (http://localhost:3000/assets/ember-data.js?body=1:9806:33)
  at JSONSerializer.extend.extractSingle         (http://localhost:3000/assets/ember-data.js?body=1:3019:28)
  at apply                                       (http://localhost:3000/assets/ember.js?body=1:7984:27)
  at superWrapper     [as extractSingle]         (http://localhost:3000/assets/ember.js?body=1:7569:15)
  at Ember.Object.extend.extractSave             (http://localhost:3000/assets/ember-data.js?body=1:2509:21)
  at Ember.Object.extend.extractCreateRecord     (http://localhost:3000/assets/ember-data.js?body=1:2438:21)
  at Ember.Object.extend.extract                 (http://localhost:3000/assets/ember-data.js?body=1:2366:37)
  at http://localhost:3000/assets/ember-data.js?body=1:10434:32 

第二个错误是:

Uncaught Error: Assertion Failed: Error: No model was found for 'id' ember.js?body=1:118

  Ember.assert                                           ember.js?body=1:118
  RSVP.onerrorDefault                                    ember.js?body=1:46739
  __exports__.default.trigger                            ember.js?body=1:9493
  Promise._onerror                                       ember.js?body=1:10217
  publishRejection                                       ember.js?body=1:10624
  (anonymous function)                                   ember.js?body=1:16010
  DeferredActionQueues.invoke                            ember.js?body=1:8592
  DeferredActionQueues.flush                             ember.js?body=1:8642
  Backburner.end                                         ember.js?body=1:8095
  Backburner.run                                         ember.js?body=1:8152
  apply                                                  ember.js?body=1:7984
  run                                                    ember.js?body=1:6630
  hash.success                                           ember-data.js?body=1:1524
  fire                                                   jquery.js?body=1:3100
  self.fireWith                                          jquery.js?body=1:3212
  done                                                   jquery.js?body=1:9311
  callback                                               jquery.js?body=1:9721

-

代码:

-router.js

-router.js

EmTasks.Router.map(function(){
  return this.route("lists", {
    path: '/'
  });
});

EmTasks.ListsRoute = Ember.Route.extend({
  model: function() {
    return this.store.find('list');
  }
});

-controller / lists_controller.js

-controller/lists_controller.js

EmTasks.ListsController = Em.ArrayController.extend({
  addList: function() {
    this.store.createRecord('list', {
      name: this.get('newListName')
    }).save();
    return this.set('newListName', '');
  }
});

-models / list.js

-models/list.js

EmTasks.List = DS.Model.extend({
  name: DS.attr('string')
});

-templates / lists.handlebars

-templates/lists.handlebars

<div id="container">
  <h1>em-tasks</h1>
  {{view Ember.TextField valueBinding="newListName" action="addList"}}
  {{newListName}}

  {{#each controller}}
    <p>{{name}}</p>
  {{/each}}
</div>

-

Github所有代码的存储库:

https: //github.com/maciejkowalski/em-tasks/tree/96539b93eab48cc0405e9644f604242832889762

推荐答案

我找到了一个解决方案。

I have found a solution.

在Rails中设置 self.include_root_in_json true

Just set self.include_root_in_json to true in Rails.

-config / initializers / wrap_parameters.rb

-config/initializers/wrap_parameters.rb

ActiveSupport.on_load(:active_record) do
 self.include_root_in_json = true
end

然后我们收到JSON响应

then we get in JSON response

{
  list: {
    id: 1,
    name: "icebox"
  }
}

而不是

{
  id: 1,
  name: "icebox"
}

-

Mo信息:

为什么在成功执行deleteRecord后会出现错误

Ember.js没有JSON根的REST适配器

这篇关于Ember.js错误:在使用ember-data保存记录时,没有找到'id'型号的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆