0

各タスク項目にコメントを付けて複数のタスク リストを保持できるアプリを構築しています。問題なくタスクを作成できますが、コメントを作成/削除しようとすると、「Uncaught TypeError: Cannot call method 'createRecord' of undefined」というメッセージが表示されます。コントローラーの依存関係またはモデル関係のある何かに。誰かが私を正しい方向に向けることができますか?

これが私のルートです

App.Router.map(function() {
  this.resource('lists');
  this.resource('list' , {path: ':list_id'});
});

App.ApplicationRoute = Ember.Route.extend({
  setupController : function(){
    this.controllerFor('lists').set('model', this.store.find('list'));
    this.controllerFor('task').set('model' , this.store.find('task'));
    this.controllerFor('comment').set('model' , this.store.find('comment');   
  }
});


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


App.ListRoute = Ember.Route.extend({
  model : function(params){
    return this.store.find('list', params.list_id);
  }
});

これが私のモデル階層です

App.List = DS.Model.extend({
 tasks: DS.hasMany('task', {async : true})
});

App.Task = DS.Model.extend({
 description: DS.attr('string'),
 list: DS.belongsTo('list'),
 comments : DS.hasMany('comment')
});

App.Comment = DS.Model.extend({
 body : DS.attr('string'),
 task : DS.belongsTo('task')
});

そして、これが私のコントローラーです (注: コントローラーの項目は、個々のタスクを編集できるようにするためだけにあるので、必要に応じて無視してかまいません)

App.ListController = Ember.ObjectController.extend({
});

App.TaskController = Ember.ArrayController.extend({
  needs : ['list'],
  actions : {
    addTask : function(){
      var foo = this.store.createRecord('task', { 
        description : '',
        list : this.get('content.id'),
        comments : []  
      });
      foo.save();
      console.log('Task Created!');
    }
  }
});


App.ItemController = Ember.ObjectController.extend({
 //code to edit or remove individual tasks
});


App.CommentController = Ember.ObjectController.extend({
  needs : ['task'],
  actions : {
    save: function(newCommentBody) {
      var foo = this.store.createRecord('comment',{ 
        body: newCommentBody,
        task : this.get('content.id')
      });
      task.save();     
      console.log('Comment Created!');
    }  
  }     
});
4

1 に答える 1