Ruby array, javascript and json issue
- by JohnMerlino
Hey all,
I am unable to get a highcharts plugin to render a chart in a rails application:
http://github.com/loudpixel/highcharts-rails
I believe it has something to do with the sql queries to the database placed in a ruby array, which the javascript is unable to intepret. This is what I have:
def panels
pass = Student.find_by_sql('SELECT COUNT(*) FROM students WHERE student_state = 1')
fail = Student.find_by_sql('SELECT COUNT(*) FROM students WHERE student_state = 2')
student_data = [
{:name => 'Pass', :y => pass},
{:name => 'Fail', :y => fail}
]
pie_label_formatter = '
function() {
if (this.y > 15) return this.point.name;
}'
pie_tooltip_formatter = '
function() {
return "<strong>" + this.point.name + "</strong>: " + this.y + " %";
}'
@pie_chart =
Highchart.pie({
:chart => {
:renderTo => "pie-chart-container",
:margin => [50, 30, 0, 30]
},
:plotOptions => {
:pie => {
:dataLabels => {
:formatter => pie_label_formatter,
:style => {
:textShadow => '#000000 1px 1px 2px'
}
}
}
},
:series => [
{
:type => 'pie',
:data => student_data
}
],
:subtitle => {
:text => 'April 2010'
},
:title => {
:text => 'Student Status Chart'
},
:tooltip => {
:formatter => pie_tooltip_formatter
},
})
Note if I put this:
:data = student_data.to_json
It actually returns a json string of my query as text in the browser.
Also, if I hard code values (e.g. :y = 1), it will render the chart properly.
However, any database query will not render the chart properly. So I'm not sure exactly what the issue is.
Any suggestions? Thanks.