Issue having blank graphic in Highchart script

2019-08-31 16:12发布

I followed steps from http://www.highcharts.com/demo/column-basic/skies and the issue is that my values from my controller to my Highchart graphic is showing blank ( is not showing my value)

Here my tables http://sqlfiddle.com/#!2/b7347/5 that i use in my controller

|policies|
  ID     POLICY_NUM    DATE_INI  CATEGORY_ID
   1       1234      2013-01-10     1
   2       5678      2013-01-10     2
   3       3444      2013-02-10     1
   4       4577      2013-02-10     2

|categories|
  ID   NAME
  1    Life
  2    Vehicles

Here is my controller

def report

  @jan_life =Policy.find_by_sql("select count(*) as total from policies Inner join categories ON categories.id =category_id WHere category_id = 1 AND date_ini BETWEEN '2013-01-01' AND '2013-01-31'")

  @jan_vehi =Policy.find_by_sql("select count(*) as total from policies Inner join categories ON categories.id =category_id WHere category_id = 2 AND date_ini BETWEEN '2013-01-01' AND '2013-01-31'")

  @feb_life =Policy.find_by_sql("select count(*) as total from policies Inner join categories ON categories.id =category_id WHere category_id = 1 AND date_ini BETWEEN '2013-02-01' AND '2013-02-28'")

  @feb_vehi =Policy.find_by_sql("select count(*) as total from policies Inner join categories ON categories.id =category_id WHere category_id = 2 AND date_ini BETWEEN '2013-02-01' AND '2013-02-28'")

end

Here is my view

##### To Disable prototype #####
<script type="text/javascript">Array.prototype.reduce = undefined;</script>

##### To show High Chart Code ####
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

##### Values from my controller , actually is working ####
    <%= @jan_life[0].try(:total) %>     #it shows 1 value according with the info
    <%= @jan_vehi[0].try(:total) %>     #it shows 1 value according with the info
    <%= @feb_life[0].try(:total) %>     #it shows 1 value according with the info
    <%= @feb_vehi[0].try(:total) %>     #it shows 1 value according with the info

#### This code is HighChart image ####
<script src="http://code.highcharts.com/highcharts.js"></script>
<script src="http://code.highcharts.com/modules/exporting.js"></script>

<div id="container" style="min-width: 310px; height: 400px; margin: 0 auto"></div>

<script type="text/javascript">
 $(function () {
    $('#container').highcharts({
        chart: {
            type: 'column'
        },
        title: {
            text: 'Monthly Average Rainfall'
        },
        subtitle: {
            text: 'Source: WorldClimate.com'
        },
        xAxis: {
            categories: [
                'Jan',
                'Feb'    
            ]
        },
        yAxis: {
            min: 0,
            title: {
                text: 'Rainfall (mm)'
            }
        },
        tooltip: {
            headerFormat: '<span style="font-size:10px">{point.key}</span><table>',
            pointFormat: '<tr><td style="color:{series.color};padding:0">{series.name}: </td>' +
                '<td style="padding:0"><b>{point.y:.1f} mm</b></td></tr>',
            footerFormat: '</table>',
            shared: true,
            useHTML: true
        },
        plotOptions: {
            column: {
                pointPadding: 0.0,
                borderWidth: 0
            }
        },
        series: [{
            name: 'Life',
            data: @jan_life[0].try(:total) %>,

        } , {
            name: 'Vehicles',
            data: @feb_life[0].try(:total) %>

        }]
    });
});
  </script>    

What I'm doing wrong? is showing blank seems that is not passing params

Here is the highchart code view that I should have http://jsfiddle.net/ajEF2/ .

But I don't want to write the value ,I want use values from my controller to show in my report image

Please somebody can help me with this?

I will really appreciate help

1条回答
可以哭但决不认输i
2楼-- · 2019-08-31 16:36

Couple things:

1.) Aren't you missing the <%= in your data assignment:

    series: [{
        name: 'Life',
        data: **<%=** @jan_life[0].try(:total) %>,

    } , {
        name: 'Vehicles',
        data: **<%=** @feb_life[0].try(:total) %>

    }]

2.) It's been a while since I've done rails but won't <%= @feb_life[0].try(:total) %> produce a single value? You'll end up with:

    series: [{
        name: 'Life',
        data: 1

    } , {
        name: 'Vehicles',
        data: 1

    }]

The data property must be an array. Try:

    series: [{
        name: 'Life',
        data: [<%=@jan_life[0].try(:total) %>] //note the brackets.

    } , {
        name: 'Vehicles',
        data: [<%=@feb_life[0].try(:total) %>]

    }]
查看更多
登录 后发表回答