我目前正在实施Highcharts以在我的RAILS应用程序中创建图表。我正在使用懒惰的高级图表宝石,使它更清洁。这很好用。图表效果很好。不幸的是,gem中不支持一些内容,例如添加自定义js事件(如click事件)。我必须在视图中添加其他选项代码。
您可以在下面查看相关代码。注释掉的点击事件运行正常。此单击事件将成功引发浏览器警报窗口。下面的大块js文本是我想要实现的更高级的点击事件。不幸的是我收到以下错误。我猜它是因为RAILS试图解析js文本?我无法解决这个问题。
<%= high_chart("my_id", @h) do |c| %>
<%= #"options.series[4].point.events.click = function() {alert ('Category: ');}" %>
<%= render :js => %{
options.series[4].point.events.click =
function() {
hs.htmlExpand(null, {
pageOrigin: {
x: this.pageX,
y: this.pageY
},
headingText: this.series.name,
maincontentText: Highcharts.dateFormat('%A, %b %e, %Y', this.x) + ':<br/> ' + this.y + ' visits',
width: 200
});
}
} %>
<% end %>
错误:
/home/scott/flux/app/views/cognos_mn_tickets/pbadata.html.erb:22: syntax error, unexpected ',', expecting ')'
...ext: Highcharts.dateFormat('%A, %b %e, %Y', this.x) +':<br/>...
... ^
/home/scott/flux/app/views/cognos_mn_tickets/pbadata.html.erb:22: unknown type of %string
... Highcharts.dateFormat('%A, %b %e, %Y', this.x) +':<br/> '+t...
...
答案 0 :(得分:1)
问题在于,当您使用%{
启动字符串时,它将在下一个}
结束 - 这位于JavaScript代码的中间。请尝试使用Heredoc语法:
<%= high_chart("my_id", @h) do |c| %>
<%= <<-END
options.series[4].point.events.click = function() {
hs.htmlExpand( null, {
pageOrigin : { x: this.pageX, y: this.pageY },
headingText : this.series.name,
maincontentText : Highcharts.dateFormat('%A, %b %e, %Y', this.x) +
':<br/> ' + this.y + ' visits',
width : 200
} );
}
END
%>
<% end %>