将Ruby合并到jqPlot中

时间:2012-07-31 14:15:25

标签: jquery ruby-on-rails ruby jqplot

背景:

我正在尝试使用jqPlot创建一个饼图,从Rails数据库中收集数据。

我的问题出现是因为jqplot不理解event.name生成的字符串。如果我手动插入几个字符串,而不通过Rails,它工作正常。我相信它与转义它不应该的字符有关。

我从Firebug获得的错误显示events = [["Title", 1234566]]。因此,jqplot尝试使用"Title"作为密钥创建此图表。它不喜欢那样。

我尝试过使用html_safe,但无济于事。


代码:

<% things = [] %>
  <% @topEvents.each do |event| %>
<% things << [event.name, event.total] %>
<% end %>

$.jqplot('topEvents', [ <%= things %> ], {
    seriesDefaults : {
        renderer : jQuery.jqplot.PieRenderer,
        rendererOptions : {
            showDataLabels: true
        }
    }
});

环境:

  • 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。

1 个答案:

答案 0 :(得分:1)

未来的googlers ......

虽然"string"'string'在Ruby中声明后可能是等效的,但是当涉及到javascript时,这个事实是无关紧要的。在<script>标记内,ruby字符串将显示为双引号。如果你想要单引号,你将不得不将字符串作为字符串以外的东西导入,然后稍后手动添加引号。

Javascript会理解'<%= event.total %>'就好了。它将使用Rails打印出总数,然后脚本会将单引号附加到任何一方。

希望这对任何人都有帮助!