Strange error on index page load using backbone-relational in rails TypeError: set is undefined
Here is part of backbone-relational.js source. Error is pointing on line 1931:
1891: var set = Backbone.Collection.prototype.__set = Backbone.Collection.prototype.set;
...
1931: var result = set.call( this, toAdd, _.defaults( { parse: false }, options ) );
Here is my code:
router:
class Todo.Routers.ProjectsRouter extends Backbone.Router
initialize: (options) ->
@projects = new Todo.Collections.ProjectsCollection()
@projects.reset options.projects
routes:
"new" : "newProject"
"index" : "index"
":id/edit" : "edit"
":id" : "show"
"" : "index"
newProject: ->
@view = new Todo.Views.Projects.NewView(collection: @projects)
$("#projects").html(@view.render().el)
index: ->
@view = new Todo.Views.Projects.IndexView(projects: @projects)
$("#projects").html(@view.render().el)
show: (id) ->
project = @projects.get(id)
@view = new Todo.Views.Projects.ShowView(model: project)
$("#projects").html(@view.render().el)
edit: (id) ->
project = @projects.get(id)
@view = new Todo.Views.Projects.EditView(model: project)
$("#projects").html(@view.render().el)
models:
class Todo.Models.Task extends Backbone.RelationalModel
paramRoot: 'task'
defaults:
title: null
class Todo.Collections.TasksCollection extends Backbone.Collection
model: Todo.Models.Task
url: '/tasks'
class Todo.Models.Project extends Backbone.RelationalModel
paramRoot: 'project'
defaults:
title: null
relations: [
type: Backbone.HasMany
key: 'tasks'
relatedModel: 'Todo.Models.Task'
collectionType: 'Todo.Collections.TasksCollection'
includeInJSON: false
reverseRelation:
key: 'project_id'
includeInJSON: 'id'
]
class Todo.Collections.ProjectsCollection extends Backbone.Collection
model: Todo.Models.Project
url: '/projects'
Any suggestions? On index.html I have
window.router = new Todo.Routers.ProjectsRouter({projects: #{@projects.to_json({:include => :tasks}).html_safe}});
Seems like it appears on @projects.reset options.projects
in router
It appears to be an old backbone version in rails-backbone gem at rubygems.org
To fix it just update backbone to last version. If you are using rails-backbone gem, change
gem 'rails-backbone'
to
gem 'rails-backbone', git: "https://github.com/codebrew/backbone-rails.git"
in your gemfile