我正在尝试运行一个简单的rails(-v 5.1.4)应用程序,该应用程序实现了amcharts库附带的一个示例。
这是做了什么工作:
/app/assets/javascripts/amcharts
文件夹/app/assets/javascripts/amcharts
//= require amcharts
添加到/app/assets/javascripts/application.js
我运行rails服务器,并且通过观看原始的独立html视图按预期显示图形。因此,我假设编辑的代码工作正常。
这里没有工作:
/vendor/assets(/javascripts)/amcharts
文件夹/vendor/assets(/javascripts)/amcharts
//= require amcharts
添加到/app/assets/javascripts/application.js
config.assets.paths << Rails.root.join('vendor/assets(/javascripts)/amcharts')
添加到config/application.rb
../../../vendor/assets(/javascripts)/amcharts/$name$.js
添加到app/assets/application.js
当我运行rails服务器时没有给出错误但应用程序显示空白页而不是图表,页面的源代码按预期显示我的视图文件的代码。
由于我的相应视图被称为amcharts.html.erb
,因此我的amcharts.coffee
- 文件夹中有app/assets/javascripts/
个文件。可能是链轮错误地认为它是需要的文件吗?
我也想知道app/config/manifest.js
的用途。所有明显相关的更改似乎都在app/assets/javascript/application.js
文件中进行...
编辑:我的视图文件app/views/amcharts/index.html.erb
的缩短版本(来自amcharts lib的示例的修改代码)
<div id="chartdiv" style="width: 100%; height: 400px;"></div>
<script type="text/javascript">
var chart;
var chartData = [ { $data } ];
AmCharts.ready(function () {
chart = new AmCharts.AmSerialChart();
chart.dataProvider = chartData;
$AmCharts.funs
chart.write("chartdiv");
});
</script>
答案 0 :(得分:1)
我有机会与专业人士分享我的档案,他解决了这个问题。要走的路是:
//= require amcharts3
,//= require amcharts3/serial
添加到app / assets / javascripts / application.js 我仍然想知道如何从供应商/资产中包含第三方内容。但由于现在整个工作都没有在错误的文件夹中存档,我会将其标记为已回答。感谢所有试图帮助的人!
答案 1 :(得分:-1)
将JS包直接放在vendor/assets
下,而不是vendor/assets/javascripts
。例如,通过/vendor/assets/amcharts/amcharts.js
将//= require amcharts
库添加到您的应用程序。
有关更具体的示例,请参阅Rails 5应用程序中包含DataTables库的结构:&lt; p>
vendor/assets/DataTables-1.10.16/js/dataTables.bootstrap4.js
vendor/assets/DataTables-1.10.16/js/jquery.dataTables.js
vendor/assets/DataTables-1.10.16/css/dataTables.bootstrap4.css
(请注意vendor/assets
下方的文件夹层次结构正是DataTables包提供的内容。)
application.css:
/*
*= css/dataTables.bootstrap4
*/
的application.js:
//= require js/jquery.dataTables
//= require js/dataTables.bootstrap4