图表不能在格式化程序回调函数中使用变量进行渲染

时间:2018-02-09 11:54:43

标签: ruby-on-rails highcharts lazy-high-charts

我的Rails应用程序中有一个Highcharts图表,它在xaxis formatter中有一个javascript回调函数来获取数据:

spider_chart = LazyHighCharts::HighChart.new('graph') do |f|
  f.chart(polar: true, type: 'line', height: @height)
  f.xAxis(
    categories: categories.map{ |c| [@survey.id,c.id, c.name] },
      formatter: %|function() {return '<a href="http://localhost:3000/dashboards/spiders?level=2&survey_id=' + this.value[0] + '&category_id=' + this.value[1] + '">' + this.value[2] + '</a>';}|.js_code }
  )
  f.series(name: "Gemiddelde van huidige score", data: current_scores, pointPlacement: 'on')
  f.legend(enabled: @legend, align: 'center', verticalAlign: 'top', y: 10, layout: 'vertical')
end

当我使用硬编码网址时,它可以工作:

formatter: %|function() {return '<a href="http://localhost:3000/dashboards/spiders?level=2&survey_id=' + this.value[0] + '&category_id=' + this.value[1] + '">' + this.value[2] + '</a>';}|.js_code }

当我在里面使用变量时,它不起作用。它没有给出错误,图表只是没有渲染:

formatter: %|function() {return '<a href="' + @environment + '/dashboards/spiders?level=2&survey_id=' + this.value[0] + '&category_id=' + this.value[1] + '">' + this.value[2] + '</a>';}|.js_code }

变量@environment已正确填充http://localhost:3000。 当我使用window.location.hostname时,它也有效:

formatter: %|function() {return '<a href="https://' + window.location.hostname + '/dashboards/spiders?level=2&survey_id=' + this.value[0] + '&category_id=' + this.value[1] + '">' + this.value[2] + '</a>';}|.js_code }

不幸的是,这并不总是正确填充,所以我需要在我的控制器中有一个功能来确定正确的环境。

那么如何确保可以使用@environment变量?

0 个答案:

没有答案