2017-11-21 5 views
0

Ich versuche, eine einfache Rails-Anwendung (-v 5.1.4) auszuführen, die eine der Samples implementiert, die mit der Amcharts-Bibliothek geliefert werden.Rails 5.1.4: Assets von Drittanbietern in/Vendor werden nicht in der Ansicht angezeigt

Hier ist, was tat Arbeit:

  • erstellen /app/assets/javascripts/amcharts Ordner
  • Kopie Inhalte Dritter zu /app/assets/javascripts/amcharts
  • hinzufügen //= require amcharts zu /app/assets/javascripts/application.js

ich den Schienen-Server und die Grafik laufen wird wie erwartet angezeigt, wenn Sie die ursprüngliche Standalone-HTML-Ansicht anzeigen. Daher gehe ich davon aus, dass der bearbeitete Code korrekt funktioniert.

Hier ist, was tat nicht Arbeit:

  • erstellen /vendor/assets(/javascripts)/amcharts Ordner
  • Kopie Inhalte Dritter zu /vendor/assets(/javascripts)/amcharts
  • hinzufügen //= require amcharts-/app/assets/javascripts/application.js
  • hinzufügen config.assets.paths << Rails.root.join('vendor/assets(/javascripts)/amcharts')-config/application.rb
  • relative Pfade hinzufügen zu app/assets/application.js

Wenn ich den Schienen Server kein Fehler laufen gegeben wird, aber die Anwendung zeigt eine leere weiße Seite anstelle des Diagramms zeigt die Quelle-Code der Seite den Code meiner Ansicht-Datei wie erwartet.

Seit meiner jeweiligen Ansicht amcharts.html.erb genannt Ich habe ein amcharts.coffee -Dateien in meinem app/assets/javascripts/ -Ordner. Könnte es sein, dass Kettenräder fälschlicherweise davon ausgehen, dass es sich um die benötigte Datei handelt?

Auch ich frage mich, was die app/config/manifest.js ist. Alle manifestieren bedingten Veränderungen scheinen sowieso in der app/assets/javascript/application.js Datei gemacht werden ...

EDIT: Eine verkürzte Version meiner Ansicht-Datei app/views/amcharts/index.html.erb (modifizierter Code der Proben aus 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

haben Sie diesen Weg versucht: https://rails-assets.org/#/components/amcharts3 –

+1

@WasifHossain Vielen Dank für das Teilen dieses Edelsteins. Ich habe schon andere Edelsteine ​​ausprobiert, aber sie waren nicht kompatibel. Diesen konnte ich installieren. Aber leider bleibt das Problem bestehen. Ich werde die ersten Zeilen meines View-File-Codes im ursprünglichen Post bereitstellen. Vielleicht gibt es ein Problem, das ich nicht bemerkt habe. Ich fürchte auch, ich würde in die gleichen Schwierigkeiten geraten, wenn ich das nächste Mal Inhalte von Drittanbietern hinzufügen muss. –

+0

Ich würde vorschlagen, überhaupt nicht zu fürchten, sondern mutig voranzukommen :) persönlich fand ich Schienen-Assets, um zu helfen, 3rd Party Assets auf eine viel sauberere Art und Weise zu erhalten. –

Antwort

0

Ich hatte die Möglichkeit, meine Dateien mit einem Fachmann zu teilen, und er behob das Problem. Der Weg zu gehen war:

  • 'amCharts-Schienen' Install Edelsteine, 'Schienen-Assets-amcharts3'
  • hinzufügen //= require amcharts3, //= require amcharts3/serial zu app/assets/Javascripts/application.js

Ich frage mich immer noch, wie man Drittanbieterinhalte von Anbietern/Assets einbinden kann. Aber da die ganze Sache jetzt ohne Dateien in falschen Ordnern funktioniert, werde ich dies als beantwortet markieren. Danke an alle, die versucht haben zu helfen!

-1

Setzen Sie die JS Paket direkt unter vendor/assets, nicht in vendor/assets/javascripts. Fügen Sie z. B. die Bibliothek /vendor/assets/amcharts/amcharts.js zu Ihrer Anwendung über hinzu.

Für ein konkretes Beispiel, hier ist, wie ich mit der Tables Bibliothek in einer Rails-5-Anwendung aufgebaut haben:

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 

(Beachten Sie die Ordnerhierarchie unterhalb vendor/assets ist genau das, was die Datentabellen-Paket bietet.)

application.css:

/* 
*= css/dataTables.bootstrap4 
*/ 

Anwendung.js:

//= require js/jquery.dataTables 
//= require js/dataTables.bootstrap4 
+0

Danke für Ihre Antwort! Ich habe die Bibliotheksdateien in vendor/assets/amcharts kopiert und '// = amcharts/amcharts erfordern 'und' // = amcharts/serial' erfordern zu application.js. Ich habe auch '// = amcharts erfordern 'versucht. Kein Glück. –

+0

Ist das ein Tippfehler? '// = erfordern Amcharts (bearbeiten: ah Ich hatte nicht den richtigen Namen der Bibliothek, die Sie versuchen zu verwenden, viel Glück) –

Verwandte Themen