Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Uncaught TypeError: undefined is not a function rails3/backbone/js

I just started delving into javascript to make project more responsive and I am working through a backbone.js example.

I've replicated http://www.jamesyu.org/2011/01/27/cloudedit-a-backbone-js-tutorial-by-example/ in a new Rails 3 project.

I run the project and go to the home page .... and there is a link there to /# and nothing else. Looking into the js console I get errors on two scripts: application.js and backbone.js

This (backbone.js)

backbone-min-0-3-3.js:8Uncaught TypeError: Cannot call method 'extend' of undefined

and this (application.js):

var App = {
        Views: {},
        Controllers: {},
        Collections: {},
        init: function() {

        new App.Controllers.Fffforms();
**error message ---> application.js:9Uncaught TypeError: undefined is not a function**
            Backbone.history.start();
        }
};

Being new to js, this doesn't exactly make sense and nothing I've looked up has been all that helpful in the short term.

Can anyone tell me what exactly these errors would indicate and how I can go about following up? Everything checks out comparing the resources in https://github.com/jamesyu/CloudEdit, but my replication from a new rails 3 project (not a clone of that repo) doesn't exactly work.

Any suggestions appreciated, bearing in mind I've just embarked on learning some javascript.

EDIT:

By suggestion, I went and actually added in the Jammit gem and configured it to serve all the js scripts, which the default Rails all was not. Now all the scripts are going to the browser (controller included). Unfortunately, this doesn't solve the original issue, only giving more errors on load, flowing from the App init which is this in the chrome js console:

Uncaught TypeError: undefined is not a function
App.initapplication.js:9
(anonymous function):3000/#new:32
d.extend._Deferred.f.resolveWithjquery.min.js:16
d.d.extend.readyjquery.min.js:16
d.c.addEventListener.yjquery.min.js:16

Given I'm just copying right now, there must be some small overlooked detail beyond me atm that is preventing App from initiating properly.

like image 307
blueblank Avatar asked Apr 26 '11 22:04

blueblank


1 Answers

It sounds like you are not including the file that holds the declaration of App.Controllers.Fffforms. Make sure that you are including that file somewhere in you code prior to where you include application.js.

like image 92
Andrew Hare Avatar answered Oct 18 '22 23:10

Andrew Hare