10

Viele jQuery Plugins haben folgende Verzeichnisstrukturen:Gibt es einen "Rails Way", der ein jQuery-Plugin in der Asset-Pipeline enthält?

/<plugin name> 
../css 
../images 
../js 

Die CSS-Dateien in der Regel relativ Links zu den Bildern in ihnen. Was ich tun möchte, ist diese Plugins in der Rails Way unter der Asset-Pipeline, und hoffentlich bedeutet dies nicht, dass die Dateiverweise umbenannt werden müssen, um die relativen Links zu entfernen. Gibt es einen solchen Rails Way?

Könnte es auch Overkill sein, ein bereits minimiertes jQuery-Plugin in die Asset-Pipeline aufzunehmen?

+0

Was ist mit '' // = require_tree ./ [plugin_name] '', um das gesamte Verzeichnis mit Plugin zu erfordern? – freemanoid

Antwort

2

Sie sollten versuchen, Ihre Assets zum Ladepfad hinzuzufügen, was die empfohlene Methode ist, soweit ich weiß. Wenn die Anwendung laufen lassen Sie die Assets-Pipeline aktiviert hat, soll es Ihr Vermögen nach dem Expandieren des Pfades in Ihrem application.rb

nicht sicher finden, wenn dies ist, was Sie gefragt, aber wenn nicht, Sie überprüfen soll: http://guides.rubyonrails.org/asset_pipeline.html#asset-organization

Remeber den Server

1

Ich denke, der Grund, warum Sie keine Antwort erhalten haben, ist, weil es irgendwie unklar ist, was Sie fragen. Fragen Sie, ob es übertrieben ist, Ihre Plugins in die Asset-Pipeline zu stecken? Fragen Sie, ob Sie Dateireferenzen umbenennen müssen?

Ich habe immer alle meine jquery-Plugins in meine Asset-Pipeline gestellt. Overkill oder nicht, da alles an einem Ort und sie werden nur einmal kompiliert, selbst wenn das Kompilieren länger dauert, hat das keinen Einfluss auf meine App.

+0

Diese Plugins haben normalerweise ihre eigene Verzeichnisstruktur. Behalten Sie das bei, oder verschieben Sie das CSS in das Verzeichnis/stylesheets, die Bilder in das Verzeichnis/images usw.? – AKWF

+0

Das ist der Teil, über den ich verwirrt bin. Denn wenn ich die Verzeichnisstruktur des Plugins behalte, in welches Unterverzeichnis von/Assets pipeline lege ich es? – AKWF

+0

Persönlich verschiebe ich die CSS in das Verzeichnis/Stylesheets und die Bilder in das Verzeichnis/images und dann ändere ich die Pfade nach Bedarf. Sie können so ziemlich in die CSS-Datei gehen und eine Suche auf "URL" machen und dann werden Sie alle Bildpfade abfangen. – Catfish

2

ich hatte das gleiche Problem neu zu starten und auch versucht, „den Rails Weg“, dies zu tun zu finden. Und das ist, was ich mit am Ende des Tages endete:

Wie Rob bereits erwähnt:

Verkäufer/Vermögen ist für Vermögenswerte, die durch externe Einrichtungen, wie zum Beispiel Code für JavaScript sind im Besitz Plugins und CSS-Frameworks.

Quelle: 2.1 Asset Organization

Lässt ein praktisches Beispiel: Mit dem jquery_datepicker Juwel (Anmerkung: wir wegen dieses Problems eine Abhilfe zu verwenden hatte: bundle pack does not work with git sources).

1) Installation der Perle (ziemlich straighforward):

cd vendor/gems 
git clone https://github.com/albertopq/jquery_datepicker.git 

2) Fügen Sie diese auf Ihre Gemfile ein jquery-ui Thema Install

gem 'jquery_datepicker', :path => 'vendor/gems/jquery_datepicker' 

3)

  • Aus ThemeRoller Wählen Sie ein Thema, überprüfen Sie Datepicker und Slider und die jQuery-Version
  • herunterladen und den Inhalt des Pakets
  • CSS/Bilder aus dem css/theme-name Ordner sie extrahieren bewegen:
    • jquery-ui-1.8.xx.custom.css zu app/vendor/stylesheets/
    • der images Ordner app/vendor/images/ (ja, den gesamten Ordner verschieben images, so dass Sie am Ende mit etwas wie dieses app/vendor/images/images/ui-icons_256x240.png
  • i18n vom development-bundle/ui/i18n Ordner (optional) bewegen sie sie an:
    • Erstellen Sie einen Ordner i18n unter app/vendor/javascripts/
    • bewegen jquery.ui.datepicker-xx.js in diesen Ordner app/vendor/javascripts/i18n/
    • der i18n Ordner stellen Sie sicher, geladen ist, so sind in application.js
//= require_directory ./i18n

vendor/assets AFAIK automatisch so geladen wird Sie müssen den Pfad nicht in die Asset-Pipeline aufnehmen.

Ich würde gerne sehen, wie andere sich diesem nähern, es ist eine sehr gute Frage.