Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/407.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 未捕获类型错误:未定义不是函数rails3/backbone/js_Javascript_Ruby On Rails_Ajax_Ruby On Rails 3_Backbone.js - Fatal编程技术网

Javascript 未捕获类型错误:未定义不是函数rails3/backbone/js

Javascript 未捕获类型错误:未定义不是函数rails3/backbone/js,javascript,ruby-on-rails,ajax,ruby-on-rails-3,backbone.js,Javascript,Ruby On Rails,Ajax,Ruby On Rails 3,Backbone.js,我刚刚开始深入研究javascript,以使项目更具响应性,我正在研究一个backbone.js示例 我在一个新的Rails 3项目中进行了复制 我运行项目并转到主页。。。。这里有一个指向/#的链接,没有其他链接。查看js控制台,我发现两个脚本有错误:application.js和backbone.js backbone-min-0-3-3.js:8Uncaught TypeError: Cannot call method 'extend' of undefined 这个(backbone.

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

我在一个新的Rails 3项目中进行了复制

我运行项目并转到主页。。。。这里有一个指向/#的链接,没有其他链接。查看js控制台,我发现两个脚本有错误:application.js和backbone.js

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

还有这个(application.js):

作为js的新手,这并不完全有意义,而且我查到的任何东西在短期内都没有那么大的帮助

有谁能告诉我这些错误到底意味着什么,以及我如何跟进?通过比较中的资源,所有内容都会检查出来 ,但我从一个新的rails 3项目(不是该repo的克隆)复制的内容并不完全有效

任何建议都值得赞赏,请记住我刚刚开始学习一些javascript

编辑:

根据建议,我加入了Jammit gem,并将其配置为服务于所有js脚本,而默认的Rails都不是。现在所有脚本都将进入浏览器(包括控制器)。不幸的是,这并不能解决最初的问题,只会在加载时产生更多的错误,这些错误来自于应用程序初始化,这在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

考虑到我现在只是在抄袭,一定有一些小细节被我忽略了,这妨碍了应用程序的正常启动

听起来您没有包含包含
App.Controllers.Fffforms
声明的文件。在包含application.js之前,请确保您在代码中的某个地方包含了该文件。

我认为您的应用程序中有一种绑定机制。确保所有捆绑文件中分号(;)的用法正确。

遇到了相同的问题,然后我发现我没有在任何地方包含
下划线.js
。所以我写了一个简单的
backbone.js
文件:

/*
 *= require backbone/underscore-min.js
 *= require backbone/backbone-min.js
 */
并将其与主干和下划线文件一起存储在
供应商/assets/javascripts
下:

vendor/assets/javascripts/
├── backbone
│   ├── backbone-min.js
│   └── underscore-min.js
└── backbone.js

我的
application.js.coffee
现在看起来像这样:

#= require backbone
#= require query

我的答案与@ream88类似,但Rails 3.1+资产管道功能负责缩小、捆绑等,因此我更喜欢使用未缩小的版本进行调试等

因此,请下载和的评论/完整版本,并将它们保存在
app/assets/javascripts
中(您也可以将它们保存在
vendor/assets/javascripts
中)

区别在于您应该更新清单文件(
app/assets/javascripts/application.js
)来添加require指令,如下所示

//= require jquery
//= require jquery_ujs
//= require underscore
//= require backbone
//= require_tree .

因为主干依赖于下划线,这将导致它们以正确的顺序加载,因此避免了错误。

这让我觉得有点奇怪,所以我想分享一下我的发现:确保文件的行尾与服务器的文件系统匹配。

在firefox控制台中,我收到了不同的错误错误错误:f未定义,错误:App.Controllers.ffforms不是构造函数。谢谢,我带来了一些以前没有的js,但还是有同样的问题。谢谢-我的愚蠢:下划线必须放在第一位。application.js和/=是否需要rails?
//= require jquery
//= require jquery_ujs
//= require underscore
//= require backbone
//= require_tree .