2015-08-21 11 views
7

ich die Ruby-bin mit auf Schienen 5 und verwenden Turbo-Link wie unten dargestellt:Ruby on Rails 5 - Turbolink 3 funktionierte nicht richtig

<%= javascript_include_tag 'custom-plugins', 'data-turbolinks-track' => true %> 

Es funktioniert gut mit Ruby On Rails 4 aber haben Problem mit Ruby on Rails Version 5. Sobald ich auf die Rückseite klicke, wird die js/css nicht korrekt geladen.

Jede Hilfe wird geschätzt.

+1

was genau nicht laden Sie zu sagen? –

+0

Ich öffne meine Website www.example.com -> alles in Ordnung Ich öffne eine andere Seite -> www.example.com/xyz dann klicken Sie auf die Schaltfläche zurück, jetzt Seite nicht richtig zu rendern. –

+0

Sie wollen sagen, Seite Rendering funktioniert nicht? oder JS-Funktionen werden nicht geladen? –

Antwort

2

Als Begutachtete zu Rails 5 Awesome features

Turbolinks ist seit Version 4 Teil Rails, wahrscheinlich eines der Merkmale, die Menschen es oder Liebe hassen; hier gibt es keinen Mittelweg.

Mit Rails 5 erhalten wir eine neue Version, die mit Hilfe von HTML5 benutzerdefinierten Datenattributen bessere Geschwindigkeit und Rendering in unseren Rails-Anwendungen erwarten lässt.

Die wichtigste Änderung in dieser neuen Version ist die Partial Replacement-Funktion. Auf der Client-Seite können wir Turbolinks mitteilen, welchen Inhalt wir ändern/ersetzen müssen und was nicht.

Turbolinks sucht nach HTML5 benutzerdefinierten Attributen und entscheidet die Ersatzstrategie in unserem.

Um einen Ersatz auf der Client-Seite auszulösen, könnten wir unseren verwenden oder aktualisieren. Der Unterschied zwischen und ist, dass die erste eine an den Server ausgibt, um den HTML zu erhalten, der verwendet werden muss, um unsere while zu ersetzen, erwartet von uns den HTML, der für seinen Betrieb verwendet werden sollte.

Mit beiden Funktionen können wir einen Hash mit einem oder einem Array von HTML-Elementen an oder übergeben.

Action Result 
Turbolinks.visit(url, { change: ['entries'] }) Will replace any element with custom attribute and any element with its id listed in change. 
Turbolinks.visit(url) Will keep only elements with custom attribute and replace everything. 
Turbolinks.visit(url, { keep: ['flash'] }) Will keep only elements with custom attribute and any element with its id listed in keep, everything else will be replaced. 
Turbolinks.visit(url, { flush: true }) Will replace everything 

Wir können die gleiche Funktionalität von der Server-Seite auslösen mit und können sowohl empfangen und als Optionen, aber mit auch empfangen kann oder eine Umleitung mit oder ohne Turbolinks zu erzwingen.

Ob Sie nun Turbolinks mögen oder nicht, dies könnte ein guter Zeitpunkt sein, um auszuprobieren und herauszufinden, ob es irgendwo in Ihrer Anwendung gut passt.

+0

danke sumit :) –

1

Es ist ein übliches Vorkommen für Turbolinks mit js. Turbolinks hilft beim Laden einer bestimmten Seite viel schneller. Aber was es auch tut, hält die js manchmal davon ab, zu funktionieren. Während also diese besonderen Seite verwendet diese Zeile Laden

<%= link_to "example_page", example_page_path, :"data-no-turbolink" => true %> 

oder schreibt dieses in Ihrem Layout

<body <%= "data-no-turbolinks='true'".html_safe if controller_name=="example_controller" && action_name=="example_page" %>> 

Turbolink von der Arbeit in dieser speziellen Seite zu stoppen.