Link zum Stylesheet-Include wird im HTML-Code angezeigt, aber Stile werden nicht angewendet, wenn Turbolinks aktiviert ist?
-
21-12-2019 - |
Frage
Ich baue eine große Site und hätte gerne viel Controller-spezifisches CSS.
Ich möchte Turbolinks verwenden, aber die Controller-spezifischen Stile werden nicht angewendet, wenn Turbolinks eine neue Seite lädt.
Wenn ich mich jedoch auf derselben Seite befinde und auf die Schaltfläche "Aktualisieren" klicke, werden die Stile einwandfrei angewendet.Die Stile befinden sich also im HTML-Code, werden jedoch aufgrund der Funktionsweise von Turbolinks nicht angewendet.
In meiner Layout-Vorlagendatei habe ich Folgendes:
= stylesheet_link_tag "application", :media => "all"
= stylesheet_link_tag params[:controller]
RANDNOTIZ
In meiner Bewerbung.CSS-Datei, die ich habe
*= require_directory .
Ich verstehe, ich KÖNNEN ändern Sie es in dieses:
*= require_tree .
Um alle CSS einzuschließen und dieses Problem nicht zu haben, aber das scheint eine schlechte Lösung zu sein.Ich möchte verhindern, dass eine Lösung verwendet wird, die diese Stile Site-weit lädt.
Lösung
Wenn Sie Controller-spezifische Stylesheets wünschen, können Sie diese einfach in Ihr Anwendungslayout aufnehmen:
<%= stylesheet_link_tag controller_name, media: "all", "data-turbolinks-track" => true %>
In Ihrer Bewerbung.css, rufen Sie keine Controller-zentrierten Abhängigkeiten in Ihrem auf require
manifestieren;behandeln Sie die Controller-Stylesheets und das Anwendungs-Stylesheet als unabhängige Elemente
name des Verantwortlichen in Rails befindet sich eine Hilfsmethode, die Ihnen die Zeichenfolge des Controllernamens gibt:
Konvertiert den Klassennamen von etwas wie "OneModule :: TwoModule :: NeatController" auf "ordentlich".