Rails 5.1.4:/vendor 中的第三方资产不会显示在视图中
Rails 5.1.4: Third-party assets in /vendor wont show in view
我正在尝试 运行 一个简单的 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
,因此我的 app/assets/javascripts/
文件夹中有一个 amcharts.coffee
文件。 sprockets 会不会错误地认为这是它需要的文件?
我还想知道 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>
JS包直接放在vendor/assets
下,不要放在vendor/assets/javascripts
下。例如,通过 //= require amcharts
.
将 /vendor/assets/amcharts/amcharts.js
库添加到您的应用程序
对于更具体的示例,这是我在 Rails 5 应用程序中包含 DataTables 库的结构:
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
我有机会与专业人士分享我的文件,他解决了问题。要走的路是:
- 安装 gem 'amcharts-rails'、'rails-assets-amcharts3'
- 将
//= require amcharts3
、//= require amcharts3/serial
添加到app/assets/javascripts/application.js
我仍然想知道如何包含来自 vendor/assets 的第三方内容。但是由于整个事情现在都在进行,没有错误文件夹中的文件,所以我将其标记为已回答。感谢所有试图提供帮助的人!
我正在尝试 运行 一个简单的 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
,因此我的 app/assets/javascripts/
文件夹中有一个 amcharts.coffee
文件。 sprockets 会不会错误地认为这是它需要的文件?
我还想知道 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>
JS包直接放在vendor/assets
下,不要放在vendor/assets/javascripts
下。例如,通过 //= require amcharts
.
/vendor/assets/amcharts/amcharts.js
库添加到您的应用程序
对于更具体的示例,这是我在 Rails 5 应用程序中包含 DataTables 库的结构:
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
我有机会与专业人士分享我的文件,他解决了问题。要走的路是:
- 安装 gem 'amcharts-rails'、'rails-assets-amcharts3'
- 将
//= require amcharts3
、//= require amcharts3/serial
添加到app/assets/javascripts/application.js
我仍然想知道如何包含来自 vendor/assets 的第三方内容。但是由于整个事情现在都在进行,没有错误文件夹中的文件,所以我将其标记为已回答。感谢所有试图提供帮助的人!