我的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
变量?