2012-05-09 44 views
0

我目前正在實施Highcharts以在我的RAILS應用程序中創建圖形。我使用懶惰的高圖表寶石,使它更清潔。這工作正常。這些圖表很好。不幸的是,一些東西在gem中不被支持,比如添加像click事件這樣的自定義js事件。我必須在視圖中添加額外的選項代碼。嘗試在RAILS中呈現JS導致問題

您可以查看下面的相關代碼。註釋掉的點擊事件工作正常。該點擊事件將成功引發瀏覽器警報窗口。下面的大塊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... 
... 

回答

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 %> 
+0

是的我試過Heredoc無濟於事。我直接CnP'ed你的代碼上面沒有任何效果。完全相同的錯誤。 :( –

+0

請嘗試我更新的代碼,它與lazy_high_charts' README中的示例更接近匹配 –

+0

Hrm。它現在似乎正在通過highcharts js代碼,但是當它在視圖中稍後碰到另一個<%end%>時我抱怨<%>的做法是奇怪的 –