Context :
I’m trying to create a pie chart using jqPlot, gathering data from a Rails database.
My problem occurs because jqplot doesn’t understand the strings generated from event.name. If I manually insert a couple of strings, without going through Rails, it works fine.nI believe it has something to do with escaping characters it shouldn’t be.
The error I get from Firebug shows events = [["Title", 1234566]]. Thus jqplot tries to create this chart with "Title" as a key. It doesn’t like that.
I’ve tried using html_safe, to no avail.
Code :
<% things = [] %>
<% @topEvents.each do |event| %>
<% things << [event.name, event.total] %>
<% end %>
$.jqplot('topEvents', [ <%= things %> ], {
seriesDefaults : {
renderer : jQuery.jqplot.PieRenderer,
rendererOptions : {
showDataLabels: true
}
}
});
Environment :
- Ruby 1.9.3
- Rails 3.2.6
- SQLite3 3.6.20
- jquery-rails 2.0.2 (RubyGem)
- JQuery 1.7.2
- jqplot 1.0.0_r1012.
For future googlers…
Although
"string"and'string'may be equivalent once they are declared in Ruby, this fact is irrelevant when it comes to javascript. Within a<script>tag, ruby strings will show up as being double quoted. If you want single quotes, you’re going to have to import the string as something other than a string, and then manually add the quotes later.Javascript will understand
'<%= event.total %>'just fine. It will use Rails to print out the total, and then the script will append single quotes to either side.Hope this helps anyone!