2015-08-21 4 views
7

J'utilise Ruby on Rails 5 et utiliser turbo-lien comme indiqué ci-dessous:Ruby on Rails 5 - Turbolink 3 ne fonctionne pas correctement

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

Il fonctionne bien avec Ruby on Rails 4 mais ont question avec Ruby on Rails version 5. Une fois que je clique dessus, les js/css ne sont pas chargés correctement.

Toute aide sera appréciée.

+1

Qu'est-ce que vous ne voulez pas dire? –

+0

J'ouvre mon site www.example.com -> tout va bien J'ouvre une autre page -> www.example.com/xyz puis cliquez sur le bouton de retour, maintenant la page ne s'affiche pas correctement. –

+0

Vous voulez dire que le rendu des pages ne fonctionne pas? ou les fonctions JS ne se chargent pas? –

Répondre

2

Comme arbitré Rails 5 Awesome features

Turbolinks a fait partie des rails depuis la version 4, probablement l'une des caractéristiques que les gens détestent ou l'amour; il n'y a pas de terrain d'entente ici. Avec Rails 5, nous allons recevoir une nouvelle version qui, avec l'aide des attributs de données personnalisés HTML5, nous attend une meilleure vitesse et un meilleur rendu dans nos applications Rails.

Le changement le plus important dans cette nouvelle version est la fonctionnalité de remplacement partiel. Du côté des clients, nous serons en mesure de dire à Turbolinks quel contenu avons-nous besoin de changer/remplacer et ce que nous n'avons pas. Les turbolinks rechercheront les attributs personnalisés HTML5 et décideront de la stratégie de remplacement dans notre.

Pour déclencher un remplacement du côté client, nous pourrions utiliser ou mettre à jour notre. La différence entre et est que le premier va émettre un au serveur pour obtenir le code HTML qui doit être utilisé pour remplacer notre code HTML qui devrait être utilisé pour son fonctionnement.

Avec les deux fonctions, nous pouvons passer un hachage avec un ou un tableau d'éléments HTML à ou.

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 

Nous pouvons déclencher les mêmes fonctionnalités du côté serveur avec et, les deux peuvent recevoir, et que les options mais peut aussi recevoir avec ou pour forcer une redirection avec ou sans Turbolinks. Que vous aimiez ou non les turbocompresseurs, c'est peut-être le bon moment pour essayer et savoir si cela peut être un bon ajustement quelque part dans votre application.

+0

merci sumit :) –

1

C'est un phénomène courant dans les turbocompresseurs avec js. Turbolinks aide à charger une page particulière beaucoup plus rapidement. Mais ce qu'il fait aussi, c'est empêcher les js de fonctionner parfois. Ainsi, lors du chargement de cette page en particulier l'utilisation de cette ligne

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

ou écrire dans votre mise en page

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

pour arrêter Turbolink de travailler dans cette page particulière.