Javascript没有出现在Rails 4中。(高图)

Javascript没有出现在Rails 4中。(高图),javascript,ruby-on-rails,highcharts,turbolinks,Javascript,Ruby On Rails,Highcharts,Turbolinks,我在一个更简单的Rails应用程序中加入了Highcharts,它运行得很好。但当我在更复杂的Rails应用程序中执行相同操作时,图表中的Javascript代码没有显示出来 以下是我到目前为止所做的: Gemfile gem "highcharts-rails", "~> 3.0.0" application.js //= require highcharts //= require highcharts/highcharts-more show.html.erb <div

我在一个更简单的Rails应用程序中加入了Highcharts,它运行得很好。但当我在更复杂的Rails应用程序中执行相同操作时,图表中的Javascript代码没有显示出来

以下是我到目前为止所做的:

Gemfile

 gem "highcharts-rails", "~> 3.0.0"
application.js

//= require highcharts
//= require highcharts/highcharts-more
show.html.erb

<div class="panel panel-default">
  <div class="panel-heading">Chart</div>
  <div id="container" style="width:100%; height:400px;">
    </div>
<script type="text/javascript" charset="utf-8">
$(function () {
    $(document).ready(function() {
        Highcharts.setOptions({
            global: {
                useUTC: false
            }
        });

        var chart;
        $('#container').highcharts({
            chart: {
                type: 'spline',
                animation: Highcharts.svg, // don't animate in old IE
                marginRight: 10,
                events: {
                    load: function() {

                        // set up the updating of the chart each second
                        var series = this.series[0];
                        setInterval(function() {
                            var x = (new Date()).getTime(), // current time
                                y = Math.random();
                            series.addPoint([x, y], true, true);
                        }, 1000);
                    }
                }
            },
            title: {
                text: 'Live random data'
            },
            xAxis: {
                type: 'datetime',
                tickPixelInterval: 150
            },
            yAxis: {
                title: {
                    text: 'Value'
                },
                plotLines: [{
                    value: 0,
                    width: 1,
                    color: '#808080'
                }]
            },
            tooltip: {
                formatter: function() {
                        return '<b>'+ this.series.name +'</b><br/>'+
                        Highcharts.dateFormat('%Y-%m-%d %H:%M:%S', this.x) +'<br/>'+
                        Highcharts.numberFormat(this.y, 2);
                }
            },
            legend: {
                enabled: false
            },
            exporting: {
                enabled: false
            },
            series: [{
                name: 'Random data',
                data: (function() {
                    // generate an array of random data
                    var data = [],
                        time = (new Date()).getTime(),
                        i;

                    for (i = -19; i <= 0; i++) {
                        data.push({
                            x: time + i * 1000,
                            y: Math.random()
                        });
                    }
                    return data;
                })()
            }]
        });
    });

});
</script>
</div>

图表
$(函数(){
$(文档).ready(函数(){
Highcharts.setOptions({
全球:{
useUTC:false
}
});
var图;
$(“#容器”)。高图({
图表:{
类型:“样条线”,
动画:Highcharts.svg,//不要在旧IE中设置动画
marginRight:10,
活动:{
加载:函数(){
//设置图表的每秒更新
var系列=本系列[0];
setInterval(函数(){
var x=(新日期()).getTime(),//当前时间
y=数学随机();
系列。添加点([x,y],真,真);
}, 1000);
}
}
},
标题:{
文本:“实时随机数据”
},
xAxis:{
键入:“日期时间”,
像素间隔:150
},
亚克斯:{
标题:{
文本:“值”
},
绘图线:[{
值:0,
宽度:1,
颜色:'#808080'
}]
},
工具提示:{
格式化程序:函数(){
返回“+this.series.name+”
+ Highcharts.dateFormat(“%Y-%m-%d%H:%m:%S',this.x)+'
'+ 数字格式(this.y,2); } }, 图例:{ 已启用:false }, 出口:{ 已启用:false }, 系列:[{ 名称:'随机数据', 数据:(函数(){ //生成一个随机数据数组 var数据=[], 时间=(新日期()).getTime(), 我
对于(i=-19;i获取最新的Highcharts源代码,它修复了这个问题:

我在开始使用Highcharts时遇到了类似的问题。我知道这个问题有点老了,但我想写这个问题以供参考,以防其他人遇到这个问题

以下是我为使图表正常工作所做的工作(作为参考,我运行的是Rails 4.0.2和ruby 2.1.1。最新的highcharts和最新的highcharts Rails gem):

首先,确保所有highcharts.js文件都加载到您的assets/javascript目录中

在application.js文件中,应按以下顺序排列:

//= require jquery
//= require jquery_ujs   
//= require turbolinks
//= require highcharts
//= require_tree .
其次,要从show.html.erb文件中获取代码,我不知道coffeescript,但您可以在/assets/javascript中创建一个名为chart.js的js文件

$(function () {  
确保chart.js中的(“#container”)与html.erb文件中div的id匹配。如下所示:

/assets/javascript/chart.js

$('#container').highcharts({
show.html.erb:

<div id="container" style="width:100%; height:400px;"></div>

我不需要删除或关闭turbolinks就可以实现这些功能。但是,当我设置导航栏链接时,我希望我的页面在重新打开时刷新(以确保显示最新信息,而不是缓存信息)因此,在我的导航栏中,我确实删除了turbolinks功能,向包含我的链接的导航栏div添加了无turbolinks数据。如下所示:

<div class="nav" data-no-turbolink>
   ... navbar code here 
</div>

…这里是条形码
这里有一个指向github repo for turbolinks的链接—阅读文档,因为它提供了有关turbolinks的功能、为什么有用以及(当您不想使用它时)如何关闭它的详细信息。


最后一件事-当我终于得到我的图表渲染(塔达!),他们应用了highcharts主题。我只是从/assets/javascript中删除了highchart主题文件夹,它们看起来很棒。

你能验证highcharts是否正在加载吗?你在控制台中看到任何错误吗?至于你的第二个问题,将`/=require highcharts`添加到channel.js.coffee顶部,然后从application.js中删除谢谢!T在其他一些javascript片段中出现了一个错误,因此根本没有加载javascript。每当我取消对该部分的注释时,它就会工作。