我应该使用jQuery将页面相关的javascript代码放在Rails3.2的何处?
我正在使用JQuery和Highcharts 这是我的应用程序/资产/javascripts/文件夹的内容:我应该使用jQuery将页面相关的javascript代码放在Rails3.2的何处?,javascript,jquery,ruby-on-rails,Javascript,Jquery,Ruby On Rails,我正在使用JQuery和Highcharts 这是我的应用程序/资产/javascripts/文件夹的内容: application.js graphique_repartition_budgetaire.js.erb proj_charge.js.erb 这是我的app/assets/javascripts/application.js文件 // This is a manifest file ... bla bla bla ... // //= require jquery //= req
application.js
graphique_repartition_budgetaire.js.erb
proj_charge.js.erb
这是我的app/assets/javascripts/application.js文件
// This is a manifest file ... bla bla bla ...
//
//= require jquery
//= require jquery_ujs
//= require_tree .
//= require highcharts
这里是我的app/assets/javascripts/graphique_repartition_budgetaire.js.erb文件
$(function () {
Highcharts.setOptions({
lang: {
thousandsSep: "'"
}
});
$('#graphique-repartition-budgetaire').highcharts({
// my graphic code is here....
});
});
在那之前,一切正常。
当我尝试为其他特定页面编写其他javascript/JQuery时,问题就出现了。我将这段新代码放在app/assets/javascripts/proj_charge.js.erb文件中:
$(function () {
alert('JQuery is ready !');
});
此文件未执行,并且似乎也未加载。
为什么?
我应该将所有jQuery代码放在同一个文件中吗?
我是Javascript和JQuery的初学者,所以我不知道是否禁止两次声明相同的$(function(){})代码>
我做错了什么
==编辑===
我在applicationjs文件的末尾包含了代码:
// This is a manifest file ... bla bla bla ...
//
//= require jquery
//= require jquery_ujs
//= require_tree .
//= require highchart
$(function () {
alert('JQuery is ready !');
});
然后我停止web服务器,编译资产,并重新启动web服务器:
/etc/init.d/apache2 stop
rake assets:precompile
/etc/init.d/apache2 start
什么都没有发生,代码仍然没有出现在firebug的源页面中。我终于解决了这个问题
问题来自我的开发环境,使用Highcharts和资产管道。
事实上,我对Highchart的javascript图形调用存在于app/assets/javascripts/graphique_repartition_budgetaire.js.erb中,也存在于我的预编译资产中(由我的rake assets:precompile
命令构建)
这导致了一场灾难
此错误阻止执行proj_charge.js.erb中的javascript代码。
这就是它没有显示警报消息的原因
我在下面的帖子中解释了在开发模式下解决这个资产预编译问题的解决方案:
声明$(函数(){});两次不会破坏您的代码,因为它只是检查DOM是否已准备就绪,因此无需执行多次。事实上,它没有加载是与Rails相关的另一个问题。