Ich habe einen interaktiven Header für meine Website in /views/layouts/_header.html.haml.Wie schließe ich benutzerdefiniertes JavaScript auf/für eine einzelne Seite in Rails ein?
Ich möchte alle JavaScript für den Header in einer einzigen Datei gesammelt werden. Am wichtigsten ist, dass ich Twitter Typeahead und Bloodhound für ein Suchfeld mit automatischem Vorschlag verwende. Ein Großteil dieses JavaScript muss ausgeführt werden, nachdem der Header gerendert wurde. Daher funktioniert seine Einbindung in application.js (die auf meiner Seite in application.html.haml enthalten ist) nicht, da dies vor der Wiedergabe des Headers ausgeführt wird.
Ich habe search-bar.js unter/assets/javascripts/hinzugefügt, die alle JS enthält, die ich auf dieser Seite ausführen muss.
Am unteren Rand meiner _header.html.haml habe ich nur mit einem regulären Skript-Tag verknüpft.
Das funktioniert gut lokal, aber auf meinem Dev-Server bekomme ich einen 404 für dieses Asset. Wird die statische Datei möglicherweise aus Performance-Gründen gelöscht? Selbst wenn es funktioniert, wenn es in der Asset-Pipeline enthalten ist, wird das Skript nicht zweimal geladen (einmal als einzelnes Skript und einmal in application.js)?
Ich habe den Eindruck, dass dies nicht der beste Weg ist, das JavaScript eines Teils in eine eigene Datei zu isolieren. Was ist der beste und am meisten "raily" Weg, um sicherzustellen, dass das Skript einmal geladen wird, nachdem _header gerendert und innerhalb seiner eigenen JavaScript-Datei isoliert wurde?
EDIT: Könnte dies vielleicht so einfach sein wie die folgenden Zeilen an den unteren Rand meiner Fußzeile teilweise verschieben? Wird dies in Rails als gute Praxis angesehen?
#{ stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true }
#{ javascript_include_tag 'application', 'data-turbolinks-track' => true }
war meine Antwort hilfreich für Sie? –