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

时间:2013-10-13 23:00:01

标签: 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 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>

有人知道我做错了什么吗?谷歌告诉它可能与turbolinks有关,但它也无法在其他应用程序上运行......

快速的第二个问题。我怎么能把这个代码添加到channel.js.coffee,所以这个页面上没有js? 提前谢谢!

2 个答案:

答案 0 :(得分:1)

抓住最新的Highcharts来源,解决了这个问题:code.highcharts.com

答案 1 :(得分:1)

当我开始使用highcharts时,我遇到了与此非常相似的东西。我知道这个问题有点旧,但我想写这个以供参考,以防其他人遇到这个问题。

这是我为了让我的图表工作而做的(作为参考,我运行Rails 4.0.2和ruby 2.1.1。以及带有最新highcharts-rails gem的最新highcharts):

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

在application.js文件中,您应按以下顺序进行以下操作:

//= require jquery
//= require jquery_ujs   
//= require turbolinks
//= require highcharts
//= require_tree .

其次,要从show.html.erb文件中获取代码,我不了解coffeescript,但您可以在名为chart.js的/ assets / javascript中创建一个js文件。将您的javascript放入此文件,从

开始
$(function () {  

确保chart.js中的(&#39;#container&#39;)与html.erb文件中div的id匹配。像这样:

/assets/javascript/chart.js

$('#container').highcharts({

show.html.erb:

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

我不需要移除或关闭turbolink以使其中的任何一个工作。但是,当我设置导航栏链接时,我希望我的页面在重新打开时刷新(以确保显示最新信息,而不是缓存信息)所以在我的导航栏中,我确实通过添加数据删除了turbolinks功能 - 无涡轮链接到包含我的链接的navbar div。如下:

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

这里是关于turbolinks的github回购的链接 - 阅读文档,因为它提供了有关turbolinks做什么,为什么它有用以及(当你不想使用它时)的好信息)如何关闭它。 https://github.com/rails/turbolinks/blob/master/README.md

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