Javascript没有出现在Rails 4中。(高图)
我在一个更简单的Rails应用程序中加入了Highcharts,它运行得很好。但当我在更复杂的Rails应用程序中执行相同操作时,图表中的Javascript代码没有显示出来 以下是我到目前为止所做的: GemfileJavascript没有出现在Rails 4中。(高图),javascript,ruby-on-rails,highcharts,turbolinks,Javascript,Ruby On Rails,Highcharts,Turbolinks,我在一个更简单的Rails应用程序中加入了Highcharts,它运行得很好。但当我在更复杂的Rails应用程序中执行相同操作时,图表中的Javascript代码没有显示出来 以下是我到目前为止所做的: Gemfile gem "highcharts-rails", "~> 3.0.0" application.js //= require highcharts //= require highcharts/highcharts-more show.html.erb <div
gem "highcharts-rails", "~> 3.0.0"
application.js
//= require highcharts
//= require highcharts/highcharts-more
show.html.erb
<div class="panel panel-default">
<div class="panel-heading">Chart</div>
<div id="container" style="width:100%; height:400px;">
</div>
<script type="text/javascript" charset="utf-8">
$(function () {
$(document).ready(function() {
Highcharts.setOptions({
global: {
useUTC: false
}
});
var chart;
$('#container').highcharts({
chart: {
type: 'spline',
animation: Highcharts.svg, // don't animate in old IE
marginRight: 10,
events: {
load: function() {
// set up the updating of the chart each second
var series = this.series[0];
setInterval(function() {
var x = (new Date()).getTime(), // current time
y = Math.random();
series.addPoint([x, y], true, true);
}, 1000);
}
}
},
title: {
text: 'Live random data'
},
xAxis: {
type: 'datetime',
tickPixelInterval: 150
},
yAxis: {
title: {
text: 'Value'
},
plotLines: [{
value: 0,
width: 1,
color: '#808080'
}]
},
tooltip: {
formatter: function() {
return '<b>'+ this.series.name +'</b><br/>'+
Highcharts.dateFormat('%Y-%m-%d %H:%M:%S', this.x) +'<br/>'+
Highcharts.numberFormat(this.y, 2);
}
},
legend: {
enabled: false
},
exporting: {
enabled: false
},
series: [{
name: 'Random data',
data: (function() {
// generate an array of random data
var data = [],
time = (new Date()).getTime(),
i;
for (i = -19; i <= 0; i++) {
data.push({
x: time + i * 1000,
y: Math.random()
});
}
return data;
})()
}]
});
});
});
</script>
</div>
图表
$(函数(){
$(文档).ready(函数(){
Highcharts.setOptions({
全球:{
useUTC:false
}
});
var图;
$(“#容器”)。高图({
图表:{
类型:“样条线”,
动画:Highcharts.svg,//不要在旧IE中设置动画
marginRight:10,
活动:{
加载:函数(){
//设置图表的每秒更新
var系列=本系列[0];
setInterval(函数(){
var x=(新日期()).getTime(),//当前时间
y=数学随机();
系列。添加点([x,y],真,真);
}, 1000);
}
}
},
标题:{
文本:“实时随机数据”
},
xAxis:{
键入:“日期时间”,
像素间隔:150
},
亚克斯:{
标题:{
文本:“值”
},
绘图线:[{
值:0,
宽度:1,
颜色:'#808080'
}]
},
工具提示:{
格式化程序:函数(){
返回“+this.series.name+”
+
Highcharts.dateFormat(“%Y-%m-%d%H:%m:%S',this.x)+'
'+
数字格式(this.y,2);
}
},
图例:{
已启用:false
},
出口:{
已启用:false
},
系列:[{
名称:'随机数据',
数据:(函数(){
//生成一个随机数据数组
var数据=[],
时间=(新日期()).getTime(),
我
对于(i=-19;i获取最新的Highcharts源代码,它修复了这个问题:我在开始使用Highcharts时遇到了类似的问题。我知道这个问题有点老了,但我想写这个问题以供参考,以防其他人遇到这个问题
以下是我为使图表正常工作所做的工作(作为参考,我运行的是Rails 4.0.2和ruby 2.1.1。最新的highcharts和最新的highcharts Rails gem):
首先,确保所有highcharts.js文件都加载到您的assets/javascript目录中
在application.js文件中,应按以下顺序排列:
//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require highcharts
//= require_tree .
其次,要从show.html.erb文件中获取代码,我不知道coffeescript,但您可以在/assets/javascript中创建一个名为chart.js的js文件
$(function () {
确保chart.js中的(“#container”)与html.erb文件中div的id匹配。如下所示:
/assets/javascript/chart.js
$('#container').highcharts({
show.html.erb:
<div id="container" style="width:100%; height:400px;"></div>
我不需要删除或关闭turbolinks就可以实现这些功能。但是,当我设置导航栏链接时,我希望我的页面在重新打开时刷新(以确保显示最新信息,而不是缓存信息)因此,在我的导航栏中,我确实删除了turbolinks功能,向包含我的链接的导航栏div添加了无turbolinks数据。如下所示:
<div class="nav" data-no-turbolink>
... navbar code here
</div>
…这里是条形码
这里有一个指向github repo for turbolinks的链接—阅读文档,因为它提供了有关turbolinks的功能、为什么有用以及(当您不想使用它时)如何关闭它的详细信息。
最后一件事-当我终于得到我的图表渲染(塔达!),他们应用了highcharts主题。我只是从/assets/javascript中删除了highchart主题文件夹,它们看起来很棒。你能验证highcharts是否正在加载吗?你在控制台中看到任何错误吗?至于你的第二个问题,将`/=require highcharts`添加到channel.js.coffee顶部,然后从application.js中删除谢谢!T在其他一些javascript片段中出现了一个错误,因此根本没有加载javascript。每当我取消对该部分的注释时,它就会工作。