Rails 5.1.4: сторонние ресурсы в / vendor не будут отображаться

1

Я пытаюсь запустить простые рельсы (-v 5.1.4) приложение, которое реализует один из образцов, которые поставляются с библиотекой amcharts.

Вот что сделали работу:

  • создать /app/assets/javascripts/amcharts папку
  • копировать сторонний контент в /app/assets/javascripts/amcharts
  • add //= require amcharts в /app/assets/javascripts/application.js

Я запускаю сервер рельсов, и график отображается, как ожидалось, от просмотра оригинального автономного представления html. Поэтому я предполагаю, что отредактированный код работает правильно.

Вот что не получилось:

  • создать /vendor/assets(/javascripts)/amcharts папку /vendor/assets(/javascripts)/amcharts
  • копировать сторонний контент в /vendor/assets(/javascripts)/amcharts
  • add //= require amcharts в /app/assets/javascripts/application.js
  • add config.assets.paths << Rails.root.join('vendor/assets(/javascripts)/amcharts') в config/application.rb
  • добавьте относительные пути ../../../vendor/assets(/javascripts)/amcharts/$name$.js к app/assets/application.js

Когда я запускаю сервер rails, никакая ошибка не указана, но приложение отображает пустую белую страницу вместо графика, исходный код страницы показывает код моего представления -file, как и ожидалось.

Поскольку мое соответствующее мнение называется amcharts.html.erb меня есть amcharts.coffee -file в моем app/assets/javascripts/ -folder. Может ли это быть звездочки, ложно предполагает, что файл нужен?

Также интересно, для чего подходит app/config/manifest.js. Все изменения, связанные с манифестом, как представляется, сделаны в файле app/assets/javascript/application.js любом случае...

EDIT: сокращенная версия моего представления -file 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
    Вы пробовали так: rails-assets.org/#/components/amcharts3
  • 1
    @WasifHossain Спасибо, что поделились этим драгоценным камнем. Я пробовал другие драгоценные камни раньше, но они не были совместимы. Этот я смог установить. Но, к сожалению, проблема все еще остается. Я предоставлю первые строки моего кода файла представления в оригинальном посте. Может быть, есть проблема, которую я не осознавал. Также я боюсь, что в следующий раз я столкнусь с той же проблемой, когда мне придется добавить сторонний контент.
Показать ещё 3 комментария
Теги:
amcharts
asset-pipeline

2 ответа

1
Лучший ответ

Я получил возможность поделиться своими файлами с профессионалом, и он исправил проблему. Путь был:

  • Установите gems 'amcharts-rails', 'rails-assets-amcharts3'
  • add //= require amcharts3, //= require amcharts3/serial для app/assets/javascripts/application.js

Мне все еще интересно, как включить сторонний контент из поставщика/активов. Но так как все работает сейчас без файлов в неправильных папках, я отмечу это как ответ. Спасибо всем, кто пытался помочь!

0

Поместите пакет JS непосредственно под vendor/assets, а не в vendor/assets/javascripts. Например, добавьте библиотеку /vendor/assets/amcharts/amcharts.js в ваше приложение через //= require amcharts.

Для более конкретного примера, здесь, как я структурировал, включая библиотеку DataTables в приложении Rails 5:

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
  • 0
    Спасибо за ваш ответ! Я скопировал файлы библиотеки в vendor / assets / amcharts и добавил //= require amcharts/amcharts и //= require amcharts/serial в application.js. Также я попытался //= require amcharts . Не повезло.
  • 0
    Это опечатка? //= require amcharts (edit: ах, у меня не было правильного названия библиотеки, которую вы пытаетесь использовать, удачи)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню