Hen*_*jie 5 javascript ruby-on-rails ruby-on-rails-3.2 angularjs
我正在学习本教程,虽然将它添加到Gem文件并捆绑安装但它工作正常.我尝试将其包含到application.js文件中的那一刻,加载时出现以下错误:
throw Error("Sprockets::FileNotFound: couldn't find file 'angular'\n (in /my/path/to/rails/app/assets/javascripts/application.js:13)")
Run Code Online (Sandbox Code Playgroud)
application.js文件看起来像这样(从第13行开始):
//= require angular
//= require jquery
//= require jquery_ujs
//= require jquery.ui.autocomplete
//= require bootstrap
//= require pusher.min.js
//= require pusher_setup
//= require_directory .
Run Code Online (Sandbox Code Playgroud)
因此,我的问题是如何成功将AngularJS包含到我的Rails项目中?
我目前正在使用Rails 3.2.2和Ruby 1.9.3.
我遇到了同样的问题.我通过以下方式解决了这个问题
1)在我的情况下,文件//= require_tree .中丢失application.js..所以我添加了它.
2)重启Apache服务器(如果webrick,然后重启)
添加gem后,您必须重新启动Web服务器.
从查看gem的源代码,它具有角度javascripts vendor/assets/javascripts,这意味着它们将通过刚才可用//= require angular.如果它们没有加载,可能是因为需要重新启动服务器并且需要捆绑安装.
至于require_tree .,我强烈建议不要这样做,因为这意味着你将失去对事物加载顺序的控制.
例如,angular本身与它自己的jQuery(jQuery-lite)版本打包在一起,但是如果在加载时已经存在jQuery,它将使用全局版本.
这意味着做什么
//= reqiure angular
//= require jquery
Run Code Online (Sandbox Code Playgroud)
会做些不同的事情
//= require jquery
//= require angular
Run Code Online (Sandbox Code Playgroud)
在加载顺序很重要的情况下还有很多其他情况,例如,如果你有Backbone.js和Underscore,你会想要在Backbone之前加载Underscore等.
作为一般惯例,我总是建议只使用require,除非您在自己的代码中加载顺序无关紧要,例如//= require_tree ./controllers您自己的控制器目录.在那种情况下,我会说require_tree完全没问题.
| 归档时间: |
|
| 查看次数: |
7622 次 |
| 最近记录: |