Ruby array, javascript and json issue

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.

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')

Are you expecting pass and fail to be numbers? They're not -
Student.find_by_sql always returns an array of student objects. Sounds
like you might want count.

Fred