Nach meinem Verständnis wird Ihr gesamtes JavaScript in einer Datei zusammengeführt. Rails tut dies standardmäßig, wenn es //= require_tree .
am Ende Ihrer application.js
Manifestdatei hinzugefügt wird.
Das klingt nach einem echten Lebensretter, aber ich bin ein wenig besorgt über seitenspezifischen JavaScript-Code. Wird dieser Code auf jeder Seite ausgeführt? Das Letzte, was ich möchte, ist, dass alle meine Objekte für jede Seite instanziiert werden, wenn sie nur auf einer Seite benötigt werden.
Gibt es nicht auch Potenzial für Code, der ebenfalls zusammenstößt?
Oder setzen Sie ein kleines script
Tag am Ende der Seite, das nur eine Methode aufruft, die den Javascript-Code für die Seite ausführt?
Benötigen Sie dann nicht mehr require.js?
Vielen Dank
EDIT : Ich schätze alle Antworten ... und ich glaube nicht, dass sie wirklich auf das Problem kommen. Einige von ihnen handeln vom Styling und scheinen sich nicht darauf zu beziehen ... und andere erwähnen nur javascript_include_tag
... was ich weiß (offensichtlich ...), aber es scheint, dass der Weg von Rails 3.1 in die Zukunft darin besteht, alles zusammenzufassen Ihr JavaScript in 1 Datei, anstatt einzelnes JavaScript am Ende jeder Seite zu laden.
Die beste Lösung, die ich finden kann, besteht darin, bestimmte Funktionen in div
Tags mit id
s oder class
es zu verpacken . Im JavaScript-Code überprüfen Sie einfach, ob sich das id
oder class
auf der Seite befindet, und wenn dies der Fall ist, führen Sie den zugehörigen JavaScript-Code aus. Auf diese Weise wird der JavaScript-Code nicht ausgeführt, wenn sich das dynamische Element nicht auf der Seite befindet - obwohl er in der application.js
von Sprockets gepackten umfangreichen Datei enthalten ist.
Meine obige Lösung hat den Vorteil, dass ein Suchfeld, das auf 8 der 100 Seiten enthalten ist, nur auf diesen 8 Seiten ausgeführt wird. Sie müssen auch nicht den gleichen Code auf 8 Seiten der Site einfügen. Tatsächlich müssen Sie nie wieder irgendwo manuelle Skript-Tags auf Ihrer Website einfügen.
Ich denke, das ist die eigentliche Antwort auf meine Frage.
quelle
application.js
), und tatsächlich zeigt die von Ihnen angegebene Referenz, warum dies so ist: Herunterladen ist das langsamster Teil des JS-Ausführungsprozesses. Viele kleine Dateien können zwischengespeichert werden als eine große. Die Leute von Unholy Rails scheinen also nicht zu erkennen, dass ihre Empfehlungen nicht mit den Prinzipien übereinstimmen, an die sie sich halten wollen, und daher sollten ihre Empfehlungen nicht ernst genommen werden.Antworten:
In den Asset Pipeline-Dokumenten wird vorgeschlagen, wie Controller-spezifisches JS ausgeführt wird:
Link zu: asset_pipeline
quelle
page_specific_js = "#{params[:controller]}_#{params[:action]}"
und dann;javascript_include_tag page_specific_js if Rails.application.assets.find_asset page_specific_js
Für die seitenspezifischen js können Sie die Garber-Irish-Lösung verwenden .
Ihr Rails-Javascripts-Ordner könnte also für zwei Controller so aussehen - Autos und Benutzer:
Und Javascripts werden so aussehen:
und markup_based_js_execution enthalten Code für das UTIL-Objekt und für die Ausführung von UTIL.init, das für DOM bereit ist.
Und vergessen Sie nicht, dies in Ihre Layoutdatei aufzunehmen:
Ich denke auch, dass es besser ist, Klassen anstelle von
data-*
Attributen zu verwenden, um das seitenspezifische CSS zu verbessern. Wie Jason Garber bereits erwähnt hat: Seitenspezifische CSS-Selektoren können sehr umständlich werden (wenn Siedata-*
Attribute verwenden).Ich hoffe, dies wird dir helfen.
quelle
window.varForOneController='val'
in dieser Controller-Init-Funktion schreiben . Auch Gon Gem kann hier helfen ( github.com/gazay/gon ). Es kann andere Problemumgehungen geben.//= require_tree .
seitenspezifische JavaScript zu entfernen und zu verwenden. Wenn Sie aktiv versuchen, dies nicht zu tun, streben Sie nach schlechter Praxis.Ich sehe, dass Sie Ihre eigene Frage beantwortet haben, aber hier ist eine andere Option:
Grundsätzlich gehen Sie davon aus, dass
ist erforderlich. Es ist nicht. Fühlen Sie sich frei, es zu entfernen. In meiner aktuellen Anwendung, die ich zum ersten Mal ehrlich mit 3.1.x mache, habe ich drei verschiedene JS-Dateien der obersten Ebene erstellt. Meine
application.js
Datei hat nurAuf diese Weise kann ich Unterverzeichnisse mit eigenen JS-Dateien der obersten Ebene erstellen, die nur das enthalten, was ich benötige.
Die Schlüssel sind:
require_tree
- Mit Rails können Sie die getroffenen Annahmen ändernapplication.js
- jede Datei imassets/javascript
Unterverzeichnis kann Preprozessor-Direktiven mit enthalten//=
Ich hoffe, das hilft und fügt der Antwort von ClosureCowboy einige Details hinzu.
Sujal
quelle
//= require_tree .
mit ,//= require_directory .
so dass Sie alle vorhandenen Dateien halten , wo sie sind , und erstellen Sie neue Verzeichnisse für seitenspezifische Dateien.Eine weitere Option: Um seiten- oder modellspezifische Dateien zu erstellen, können Sie Verzeichnisse in Ihrem
assets/javascripts/
Ordner erstellen .Ihre Hauptmanifestdatei
application.js
kann so konfiguriert werden, dass ihre Dateien geladen werdenglobal/
. Bestimmte Seiten oder Seitengruppen können ihre eigenen Manifeste haben, die Dateien aus ihren eigenen spezifischen Verzeichnissen laden. Sprockets kombiniert die von geladenen Dateien automatischapplication.js
mit Ihren seitenspezifischen Dateien, sodass diese Lösung funktioniert.Diese Technik kann auch verwendet werden
style_sheets/
.quelle
Ich schätze alle Antworten ... und ich glaube nicht, dass sie das Problem wirklich angehen. Einige von ihnen handeln vom Styling und scheinen nichts damit zu tun zu haben ... andere erwähnen es nur
javascript_include_tag
... was ich weiß (offensichtlich ...), aber es scheint, dass der Weg von Rails 3.1 in Zukunft darin besteht, alles zusammenzufassen Ihr Javascript in 1 Datei, anstatt einzelnes Javascript am Ende jeder Seite zu laden.Die beste Lösung, die ich finden kann, besteht darin, bestimmte Funktionen in
div
Tags mitid
s oderclass
es zu verpacken . Im Javascript-Code. Dann überprüfen Sie einfach, ob sich dasid
oderclass
auf der Seite befindet, und wenn dies der Fall ist, führen Sie den zugehörigen Javascript-Code aus. Auf diese Weise wird der Javascript-Code nicht ausgeführt, wenn sich das dynamische Element nicht auf der Seite befindet - obwohl er in derapplication.js
von Sprockets gepackten massiven Datei enthalten ist.Meine obige Lösung hat den Vorteil, dass ein Suchfeld, das auf 8 der 100 Seiten enthalten ist, nur auf diesen 8 Seiten ausgeführt wird. Sie müssen auch nicht den gleichen Code auf 8 Seiten der Site einfügen. Tatsächlich müssen Sie nie wieder irgendwo manuelle Skript-Tags auf Ihrer Site einfügen - außer um möglicherweise Daten vorab zu laden.
Ich denke, das ist die eigentliche Antwort auf meine Frage.
quelle
<script>
Tags. Ja, Klassen und IDs sind Teil der Antwort, aber es macht für den Benutzer keinen Sinn, JavaScript zu laden, das für diese bestimmte Seite nicht erforderlich ist.Mir ist klar, dass ich etwas spät zu dieser Party komme, aber ich wollte eine Lösung einbringen, die ich in letzter Zeit verwendet habe. Lassen Sie mich jedoch zuerst erwähnen ...
The Rails 3.1 / 3.2 Way (Nein, Sir. Ich mag es nicht.)
Siehe: http://guides.rubyonrails.org/asset_pipeline.html#how-to-use-the-asset-pipeline
Der Vollständigkeit halber füge ich dieser Antwort Folgendes hinzu, und weil es keine unrentable Lösung ist ... obwohl es mir nicht viel ausmacht.
Der "Rails Way" ist eine Controller-orientierte Lösung, anstatt wie der ursprüngliche Autor dieser angeforderten Frage auf die Ansicht ausgerichtet zu sein. Es gibt Controller-spezifische JS-Dateien, die nach ihren jeweiligen Controllern benannt sind. Alle diese Dateien werden in einem Ordnerbaum abgelegt, der standardmäßig NICHT in einer der application.js-Direktiven enthalten ist.
Um Controller-spezifischen Code einzuschließen, wird einer Ansicht Folgendes hinzugefügt.
Ich hasse diese Lösung, aber sie ist da und geht schnell. Vermutlich könnten Sie diese Dateien stattdessen so etwas wie "people-index.js" und "people-show.js" nennen und dann so etwas wie
"#{params[:controller]}-index"
eine ansichtsorientierte Lösung verwenden. Wieder eine schnelle Lösung, aber sie passt nicht gut zu mir.Mein Datenattribut Weg
Nennen Sie mich verrückt, aber ich möchte, dass ALLE meine JS bei der Bereitstellung kompiliert und in application.js minimiert werden. Ich möchte nicht daran denken müssen, diese kleinen Straggler-Dateien überall einzuschließen.
Ich lade alle meine JS in eine kompakte, bald zwischengespeicherte Browser-Datei. Wenn ein bestimmter Teil meiner application.js auf einer Seite ausgelöst werden muss, lasse ich mich vom HTML-Code informieren, nicht von Rails.
Anstatt mein JS an bestimmte Element-IDs zu sperren oder mein HTML mit Markierungsklassen zu verunreinigen, verwende ich ein benutzerdefiniertes Datenattribut namens
data-jstags
.Auf jeder Seite verwende ich - hier bevorzugte JS-Bibliotheksmethode einfügen - , um Code auszuführen, wenn das DOM vollständig geladen wurde. Dieser Bootstrapping-Code führt die folgenden Aktionen aus:
data-jstag
Angenommen, ich habe irgendwo in meiner application.js Folgendes definiert:
Das Bootstrapping-Ereignis wendet die Funktionen
my_autosuggest_init
und aufmy_hint_init
die Sucheingabe an und wandelt sie in eine Eingabe um, die eine Liste von Vorschlägen anzeigt, während der Benutzer sie eingibt, und eine Art Eingabehinweis bereitstellt, wenn die Eingabe leer und unscharf bleibt.Sofern
data-jstag="auto-suggest"
kein Element mit einem Tag versehen ist , wird der Code für automatische Vorschläge niemals ausgelöst. Es ist jedoch immer vorhanden, minimiert und schließlich in meiner application.js zwischengespeichert, wenn ich es auf einer Seite benötige.Wenn Sie zusätzliche Parameter an Ihre markierten JS-Funktionen übergeben müssen, müssen Sie etwas Kreativität anwenden. Fügen Sie entweder Datenparameterattribute hinzu, entwickeln Sie eine Parametersyntax oder verwenden Sie sogar einen hybriden Ansatz.
Selbst wenn ich einen komplizierten Workflow habe, der Controller-spezifisch zu sein scheint, erstelle ich einfach eine Datei dafür in meinem lib-Ordner, packe sie in application.js und tagge sie mit etwas wie "new-thing-wizard". Wenn mein Bootstrap auf dieses Tag trifft, wird mein netter, ausgefallener Assistent instanziiert und ausgeführt. Es wird bei Bedarf für die Ansicht (en) dieses Controllers ausgeführt, ist jedoch nicht anderweitig mit dem Controller gekoppelt. Wenn ich meinen Assistenten richtig codiere, kann ich möglicherweise alle Konfigurationsdaten in den Ansichten bereitstellen und meinen Assistenten später für jeden anderen Controller wiederverwenden, der ihn benötigt.
Auf diese Weise implementiere ich seit einiger Zeit seitenspezifisches JS und es hat mir sowohl für einfache Site-Designs als auch für komplexere / umfangreichere Anwendungen gute Dienste geleistet. Hoffentlich ist eine der beiden Lösungen, die ich hier vorgestellt habe, mein Weg oder der Rails-Weg, für jeden hilfreich, der in Zukunft auf diese Frage stößt.
quelle
Dies wurde vor langer Zeit beantwortet und akzeptiert, aber ich habe meine eigene Lösung entwickelt, die auf einigen dieser Antworten und meinen Erfahrungen mit Rails 3+ basiert.
Die Asset-Pipeline ist süß. Benutze es.
application.js
Entfernen Sie zunächst in Ihrer Datei//= require_tree.
Dann
application_controller.rb
erstellen Sie in Ihrem eine Hilfsmethode:Fügen Sie dann in Ihrer
application.html.erb
Layoutdatei Ihren neuen Helfer zu den vorhandenen Javascript-Includes hinzu, denen derraw
Helfer vorangestellt ist :Voila, jetzt können Sie ganz einfach ansichtsspezifisches Javascript mit derselben Dateistruktur erstellen, die Sie überall in Rails verwenden. Stecken Sie einfach Ihre Dateien ein
app/assets/:namespace/:controller/action.js.erb
!Hoffe das hilft jemand anderem!
quelle
<%= raw ... %>
ein 404 zurückgegeben wird?require_tree /
(schlecht)?Sie können diese Zeile in Ihre Layoutdatei (z. B. application.html.erb) einfügen, um die Controller-spezifische Javascript-Datei (die beim Generieren des Controllers erstellt wurde) automatisch zu laden:
Sie können auch eine Zeile hinzufügen, um eine Skriptdatei pro Aktion automatisch zu laden.
Fügen Sie einfach Ihre Seitenskripte in eine Unterverzeichnis ein, die nach dem Namen des Controllers benannt ist. In diese Dateien können Sie andere Skripte mit = require einfügen. Es wäre schön, einen Helfer zu erstellen, der die Datei nur dann einschließt, wenn sie vorhanden ist, um einen 404-Fehler im Browser zu vermeiden.
quelle
quelle
Vielleicht finden Sie pluggable_js Juwel als geeignete Lösung.
quelle
Das LoadJS- Juwel ist eine weitere Option:
quelle
Philipps Antwort ist ziemlich gut. Hier ist der Code, damit es funktioniert:
In application.html.erb:
<body class="<%=params[:controller].parameterize%>">
Angenommen, Ihr Controller heißt Projekte, wird Folgendes generiert:
<body class="projects">
Dann in projects.js.coffee:
quelle
<body>
ist ipso facto falsch. Siehe meine Kommentare an anderer Stelle auf dieser Seite.JavaScripts werden nur zusammengeführt, wenn Sie Rails (Sprockets) anweisen, sie zusammenzuführen.
quelle
//= require_tree .
?require_tree .
ist normalerweise eine schlechte Idee.So habe ich das Styling-Problem gelöst: (Entschuldigung der Haml)
Auf diese Weise starte ich alle seitenspezifischen .css.sass- Dateien mit:
Auf diese Weise können Sie leicht Zusammenstöße vermeiden. Wenn es um .js.coffee- Dateien geht, können Sie einfach Elemente wie;
Hoffe das hat einigen geholfen.
quelle
$('#post > #edit') ->
scheint ungültig zu sein. Wie kann jQuery innerhalb eines Bereichs arbeiten?= javascript_include_tag "application"
Auf= javascript_include_tag params[:controller]
diese Weise kann ich Javascript-Code beschränken, ohne einen Bereich in der Datei angeben zu müssen.Sie können die js auch in Ordnern gruppieren und weiterhin die Asset-Pipeline verwenden, um Ihr Javascript je nach Seite selektiv zu laden .
quelle
Ich stimme Ihrer Antwort zu. Um zu überprüfen, ob dieser Selektor vorhanden ist, verwenden Sie:
(Ich habe nicht gesehen, dass jemand die eigentliche Lösung hinzugefügt hat)
quelle
Ich sehe keine Antwort, die wirklich alles zusammenfügt und für Sie auslegt. Ich werde also versuchen zu setzen meleyal , Sujal (a la ClosureCowboy ), den ersten Teil der Ryans Antwort, und sogar Gals mutige Aussage über Backbone.js ... alle zusammen in einer Weise , die kurz und klar. Und wer weiß, ich könnte sogar die Anforderungen von Marnen Laibow-Koser erfüllen.
Beispieländerungen
Assets / Javascripts / application.js
Ansichten / Layouts / application.html.erb
Ansichten / foo / index.html.erb
Assets / Javascripts / foo.js
Assets / Javascripts / Foostuff / Foothis.js.coffee
Kurze Beschreibung
Entfernen Sie
//= require_tree .
aus application.js und listen Sie nur die JS auf, die jede Seite gemeinsam nutzt.Die beiden oben in application.html.erb gezeigten Zeilen geben der Seite an, wo application.js und Ihr seitenspezifisches JS enthalten sein sollen.
Die drei oben in index.html.erb gezeigten Zeilen weisen Ihre Ansicht an, nach einem seitenspezifischen JS zu suchen und ihn in einen benannten Ertragsbereich mit dem Namen ": javascript" (oder wie auch immer Sie ihn benennen möchten) aufzunehmen. In diesem Beispiel ist der Controller "foo", daher versucht Rails, "foo.js" im Ertragsbereich: javascript in das Anwendungslayout aufzunehmen.
Listen Sie Ihr seitenspezifisches JS in foo.js auf (oder wie auch immer der Controller heißt). Listen Sie allgemeine Bibliotheken, einen Baum, Verzeichnisse usw. auf.
Bewahren Sie Ihr benutzerdefiniertes seitenspezifisches JS an einem Ort auf, an dem Sie es neben Ihrem anderen benutzerdefinierten JS problemlos referenzieren können. In diesem Beispiel benötigt foo.js den Foostuff-Baum. Platzieren Sie also Ihr benutzerdefiniertes JS dort, z. B. foothis.js.coffee .
Hier gibt es keine harten Regeln. Sie können die Dinge jederzeit verschieben und bei Bedarf sogar mehrere Ertragsbereiche mit verschiedenen Namen in verschiedenen Layouts erstellen. Dies zeigt nur einen möglichen ersten Schritt vorwärts. (Ich mache es nicht genau so, da wir Backbone.js verwenden. Ich könnte auch foo.js in einem Ordner namens foo anstelle von foostuff ablegen, habe das aber noch nicht entschieden.)
Anmerkungen
Sie können ähnliche Dinge mit CSS tun,
<%= stylesheet_link_tag params[:controller] %>
aber dies geht über den Rahmen der Frage hinaus.Wenn ich hier eine krasse Best Practice verpasst habe, sende mir eine Notiz und ich werde mich anpassen. Rails ist für mich ziemlich neu und ehrlich gesagt bin ich bisher nicht sonderlich beeindruckt von dem Chaos, das es standardmäßig für die Unternehmensentwicklung mit sich bringt, und dem gesamten Datenverkehr, den das durchschnittliche Rails-Programm generiert.
quelle
Ich habe eine andere Lösung, die zwar primitiv für mich funktioniert und keine ausgefallenen selektiven Ladestrategien benötigt. Fügen Sie Ihre Nornal Document Ready-Funktion ein, testen Sie dann den aktuellen Windows-Speicherort, um festzustellen, ob es sich um die Seite handelt, für die Ihr Javascript bestimmt ist:
Dies ermöglicht weiterhin, dass alle js von Rails 3.x in einem kleinen Paket geladen werden, erzeugt jedoch nicht viel Overhead oder Konflikte mit Seiten, für die das js nicht vorgesehen ist.
quelle
Ryguys Antwort ist eine gute Antwort, obwohl sie in negative Punkte herabgestuft wurde.
Besonders wenn Sie so etwas wie Backbone JS verwenden - jede Seite hat ihre eigene Backbone-Ansicht. Dann hat die erb-Datei nur eine einzige Zeile Inline-Javascript, die die rechte Backbone-Ansichtsklasse auslöst. Ich betrachte es als eine einzelne Zeile 'Klebercode' und daher die Tatsache, dass seine Inline in Ordnung ist. Der Vorteil ist, dass Sie Ihren "require_tree" behalten können, mit dem der Browser das gesamte Javascript zwischenspeichern kann.
In show.html.erb haben Sie so etwas wie:
und in Ihrer Layoutdatei benötigen Sie:
quelle
Verschieben Sie alle Ihre Commom-JS-Dateien in einen Unterordner wie 'app / assets / javascript / global' und ändern Sie dann in der application.js die
//= require_tree .
Zeile in//= require_tree ./global
.Jetzt können Sie Ihr Controller-spezifisches JS im Stammverzeichnis 'app / assets / javascript /' ablegen. Diese werden nicht in das kompilierte JS aufgenommen und nur verwendet, wenn Sie sie über
= javascript_include_tag
Ihren Controller / Ihre Ansicht aufrufen .quelle
Obwohl Sie hier mehrere Antworten haben, denke ich, dass Ihre Bearbeitung wahrscheinlich die beste Wahl ist. Ein Designmuster, das wir in unserem Team von Gitlab verwenden, ist das Dispatcher-Muster. Es macht etwas Ähnliches wie das, wovon Sie sprechen, jedoch wird der Seitenname im Body-Tag durch Schienen festgelegt. Fügen Sie beispielsweise in Ihre Layoutdatei einfach Folgendes ein (in HAML):
Dann haben Sie nur einen Abschluss und eine switch-Anweisung in Ihrer
dispatcher.js.coffee
Datei in Ihrem Javascripts-Ordner wie folgt:Alles, was Sie in den einzelnen Dateien tun müssen ( z. B.
products.js.coffee
oderlogin.js.coffee
zum Beispiel), ist, sie in eine Klasse einzuschließen und dieses Klassensymbol dann zu globalisieren, damit Sie im Dispatcher darauf zugreifen können:Gitlab hat einige Beispiele dafür, mit denen Sie vielleicht herumstöbern möchten, falls Sie neugierig sind :)
quelle
Das Paloma- Projekt bietet einen interessanten Ansatz zur Verwaltung von seitenspezifischem Javascript-Code.
Verwendungsbeispiel aus ihren Dokumenten:
quelle
Schritt 1. entferne require_tree. in Ihrer application.js und application.css.
Schritt 2. Bearbeiten Sie Ihre application.html.erb (standardmäßig auf Schienen) im Layoutordner. Fügen Sie "params [: controller]" in die folgenden Tags ein.
Schritt 3. Fügen Sie eine Datei in config / initializers / assets.rb hinzu
Referenzen: http://theflyingdeveloper.com/controller-specific-assets-with-rails-4/
quelle
Ich habe das noch nicht ausprobiert, aber es sieht so aus, als ob Folgendes wahr ist:
Wenn Sie ein content_for haben, das Javascript ist (z. B. mit echtem Javascript darin), würden Kettenräder nichts davon wissen, und daher würde dies genauso funktionieren wie jetzt.
Wenn Sie eine Datei aus dem großen Javascript-Paket ausschließen möchten, gehen Sie in die Datei config / sprockets.yml und ändern Sie die Quelldateien entsprechend. Dann würden Sie einfach alle Dateien einschließen, die Sie bei Bedarf ausgeschlossen haben.
quelle
Ich habe es zuvor mit dieser Methode gemacht: http://theflyingdeveloper.com/controller-specific-assets-with-rails-4/ . Super einfach, verlässt sich auf Controller, um die richtigen js zum Laden auszuwählen.
quelle
Ich habe einige Antworten kombiniert in:
Anwendungshelfer:
layouts / application.html.haml:
quelle
Erstens:
\\=require_tree
Aus application.js entfernen. Zweitens: Der gesamte JS-Code muss unter/app/assets/javascritpt
und der gesamte CSS-Code unter zugeordnet sein/app/assets/stylesheets
quelle
Nach der Führung von Ryan habe ich Folgendes getan:
application.js.coffee
users.js.coffee (Controller-spezifisches Kaffeeskript, z. B. Controller: Benutzer, Aktion: Dashboard)
application.html.haml
quelle
eval
), wenn Ihr HTML-Code durch einen geknackten Server oder ein bösartiges Benutzer-Skript kompromittiert wird.Dies geschieht insbesondere dann, wenn Sie nicht Tonnen von Bibliotheken für Ihre spezifische Seite ausführen müssen, sondern nur ein paar hundert Zeilen JS mehr oder weniger ausführen müssen.
Da es vollkommen in Ordnung ist, Javascript-Code in HTML einzubetten, erstellen Sie einfach unter dem Verzeichnis app / views shared.js und platzieren Sie dort Ihren seiten- / seitenspezifischen Code in my_cool_partial.html.erb
Jetzt tun Sie einfach, wo immer Sie wollen:
Und das war's, k?
quelle