未捕获的TypeError:undefined不是函数rails3/backbone/js

blu*_*ank 10 javascript ajax ruby-on-rails backbone.js ruby-on-rails-3

我刚刚开始深入研究javascript以使项目更具响应性,我正在研究backbone.js示例.

我在一个新的Rails 3项目中复制了http://www.jamesyu.org/2011/01/27/cloudedit-a-backbone-js-tutorial-by-example/.

我运行该项目并转到主页....并且有一个链接到/#并没有别的.查看js控制台,我在两个脚本上遇到错误:application.js和backbone.js

这个(backbone.js)

backbone-min-0-3-3.js:8Uncaught TypeError: Cannot call method 'extend' of undefined
Run Code Online (Sandbox Code Playgroud)

这个(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();
        }
};
Run Code Online (Sandbox Code Playgroud)

作为js的新手,这并不是很有意义,我所看到的一切都没有在短期内有所帮助.

任何人都可以告诉我这些错误究竟是什么以及我如何进行跟进?一切都检查了比较https://github.com/jamesyu/CloudEdit中的资源 ,但我从一个新的rails 3项目(不是该repo的克隆)的复制并不完全有效.

任何建议表示赞赏,记住我刚刚开始学习一些javascript.

编辑:

通过建议,我实际上添加了Jammit gem并将其配置为服务所有js脚本,默认Rails都不是.现在所有脚本都将进入浏览器(包括控制器).不幸的是,这并没有解决原始问题,只是在加载时出现更多错误,从app init流出,这是在chrome js控制台中:

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
Run Code Online (Sandbox Code Playgroud)

鉴于我现在只是在复制,除了我以外,必须有一些小的被忽视的细节阻止App正常启动.

And*_*are 7

听起来你没有包含声明的文件App.Controllers.Fffforms.确保在包含application.js的位置之前将该文件包含在代码中的某个位置.