Richtiger "Rails" Weg, um Javascript auf bestimmten Seiten auszuführen

8

Ich versuche Javascript auf bestimmten Seiten auszuführen und meine einzige Lösung scheint wie ein Anti-Pattern. Ich habe controller.js in assets/javascripts/ generiert. Ich verwende gem 'jquery-turbolinks' Ich habe Code ähnlich dem folgenden:

%Vor%

Dieser Code wird auf jeder Seite abgefeuert. Also habe ich folgendes hinzugefügt:

%Vor%

Meine Frage ist, gibt es eine Möglichkeit, Schienen zu setzen, um nur die Javascript-Dateien zu verwenden, die für einen bestimmten Controller notwendig sind, oder ist Logik-Gating hinter einem Element die beste Lösung suchen?

    
maleki 08.05.2015, 22:29
quelle

2 Antworten

15

Dies ist eine ziemlich schöne Turbolinks-spezifische Lösung:

%Vor%

%Vor% %Vor%

Sie sollten beachten, dass Sie, wenn Sie Turbolinks verwenden, eine lang andauernde, persistente Sitzung mit einem beibehaltenen Status haben. Das heißt, wenn Sie Inline-Skript-Tags hinzufügen oder zusätzliche JavaScript-Dateien in Ihre Ansichten laden, bleiben sie im Speicher des Browsers.

Sie sollten daher alle seitenspezifischen Ereignisbehandlungsroutinen, die Sie in page:before-unload erstellt haben, bereinigen.

    
max 09.05.2015, 00:58
quelle
1

Es gibt viele Möglichkeiten, dies zu tun. Ich werde eine beschreiben.

Ich benutze dieses alte Juwel , um alle meine .module.js -Dateien in commonjs-Module einzubinden.

Ich habe dann einen Helfer, der etwas wie das folgende in ein <script> -Tag im Kopf jeder HTML-Seite schreibt.

%Vor%

posts/create wird aus einer vereinfachten Mischung des aktuellen Controllers und der Aktion generiert, die die Anforderung darstellt.

Ich habe dann in meinem dreadyready etwas für meine application.js .

%Vor%

Schließlich werde ich eine Datei wie diese haben, die spezifisch für die /posts/create URL ist.

app / assets / posts / create.module.js

%Vor%     
deefour 08.05.2015 22:41
quelle