Seit vielen Tagen habe ich versucht, warum eine einfache Verbindung wie diese zu verstehen:Unterschied zwischen application.haml und application.html.haml?
link_to 'My Link', my_path(format: :js), remote: true
wurde immer wiederkehr vollständige HTML-Dokuments statt Javascript auszuführen in meinem file.js.erb gelegen:
alert('hello world')
[...]
Nach Stunden der Fehlersuche fand ich, warum:
Wenn ich umbenennen mein Haupt Layout Datei wie: application.haml
es macht vollständige HTML-Dokument:
Started GET "/my_path/2.js" for 127.0.0.1 at 2016-03-05 12:28:20 +0100
Processing by MyController#show as JS
Rendered my_path/show.js.erb within layouts/application (0.1ms)
Rendered layouts/_sidebar.html.erb (18.9ms)
Rendered layouts/_headbar.haml (0.5ms)
Rendered layouts/_flash_messages.html.haml (0.2ms)
Rendered layouts/_footer.html.erb (0.1ms)
Completed 200 OK in 102ms (Views: 59.3ms | ActiveRecord: 2.9ms)
Wenn ich meine Haupt-Layout-Datei umbenennen wie: application.html.haml
es Javascript korrekt ausgeführt und läuft meine Hallo Welt Popup:
Started GET "/my_path/8.js" for 127.0.0.1 at 2016-03-05 12:28:34 +0100
Processing by MyController#show as JS
Rendered my_path/show.js.erb (0.1ms)
Completed 200 OK in 24ms (Views: 21.8ms | ActiveRecord: 0.4ms)
Warum gibt es einen Unterschied im JavaScript-Verhalten nach den verschiedenen Dateinamen meines Layouts?
Dies ist kein JavaScript-Verhalten, es ist, wie Schienen nach Vorlagen sucht. Zuerst suchen Sie nach '. ' Dateien, dann nach '. '. Wenn Sie eine generische Vorlage ohne das Format haben, wird es für alle Formate verwendet. –
BroiSatse
Wenn eine der Ansichtsvorlagen für eine Aktion fehlt, müssen die Schienen einen Fehler melden, der angibt, wie sie gesucht wird, einschließlich Pfad, Format usw. Mit diesen Informationen kennen Sie die Suchreihenfolge. – canoe