JavaScript-Datei pro Ansicht in Rails
Ich habe ähnliche Threads untersucht, aber ich kann nicht fangen. Unten ist meine application.js Datei.
%Vor%Ich habe eine Verzeichnisstruktur meiner Assets-Pipeline wie folgt:
%Vor% Wie würde ich das Verzeichnis misc für alle Seiten und home.js für HomeController
und session.js für SessionController
laden. Ich möchte nicht, dass unerwünschtes JS überall geladen wird.
Wie von Dave
gezeigt, können Sie die vorgeschlagene Lösung für seine verknüpfte Frage verwenden, d. h. indem Sie Folgendes tun:
Das Einzige, an das Sie sich erinnern sollten, ist, dass Sie Ihren Javascript-Assets die Namen der Controller nennen - also home.js
und sessions.js
in Ihrem Fall (wenn ich mich an die Namenskonventionen von Rails erinnere) / p>
Ich habe jedoch andere Möglichkeiten gesehen, dies zu tun, was nützlich ist, wenn Sie aus irgendeinem Grund Javascript auf Seiten einfügen möchten, die mit verschiedenen Controllern verknüpft sind. Diese Antwort, ich denke, gibt eine sehr elegante Lösung.
Fügen Sie zuerst die globalen Javascripts zu Ihrer Manifestdatei hinzu und fügen Sie diese in Ihre application.html.erb
Layoutdatei ein.
Und in den Ansichten, in denen Sie bestimmte Javascripts laden würden, fügen Sie einfach Folgendes hinzu:
%Vor%Das Problem mit der obigen Lösung ist, dass eine zusätzliche Anforderung für verschiedene JS-Dateien für jeden Controller erforderlich ist. Die bessere Lösung besteht darin, alle JS so zu organisieren, dass sie mit der Asset-Pipeline in eine einzige Datei kompiliert und dann basierend auf dem aktuellen Controller und der aktuellen Aktion aufgerufen werden können.
Es gibt ein paar Edelsteine da draußen, die sich darum kümmern. RailsScript ist ein einfaches Skript, das JS-Objekte aufruft, die nach dem aktuellen Controller benannt sind, und dann eine Methode in diesem Objekt aufruft, die nach der aktuellen Aktion benannt ist. Dies macht das Schreiben und Verwalten von seitenspezifischem JavaScript für Rails sehr einfach.
d. h.
%Vor%Da RailsScript auch mit Turoblinks kompatibel ist, müssen Ihre Benutzer die JS- und CSS-Assets nur einmal laden! Nicht auf jeder Seite.
Tags und Links javascript ruby-on-rails