Lorsque j'ajoute la bibliothèque JavaScript au dossier d'actifs Rails et que je l'ai configuré dans mon fichier erb en utilisant: <%= javascript_include_tag('scripts.js') %>
, le code HTML avec les classes associées à la charge du fichier JavaScript deux fois.
J'ai joint un exemple ici . Lorsque je lier les fichiers JavaScript au dossier public, ce problème ne se produit pas, mais le JavaScript ne s'affiche pas.
JavaScript
$(function() { $("a.page-scroll").bind("click", function(a) { var b = $(this); $("html, body").stop().animate({ scrollTop: $(b.attr("href")).offset().top }, 1500, "easeInOutExpo"), a.preventDefault() }) })
Html.erb
<li> <a class="page-scroll" href="#portfolio">Portfolio</a> </li> <li> <a class="page-scroll" href="#me">About Me</a> </li> <li> <a class="page-scroll" href="#contact">Contact</a> </li>
Il n'y a aucune erreur de console pertinente.
Remarque: cela fonctionne parfaitement sans Rails.
Si c'est un rail standard projet hors de la boîte, et le fichier javascript / café vit à l'intérieur de lib / assets / javascripts ou vendeur / assets / javascripts, il sera automatiquement tiré dans le pipeline d'actifs rails via cette ligne dans le fichier application.js:
// = require_tree.
Il n'est pas nécessaire d'utiliser javascript_include_tag dans le fichier erb s'il est tiré par application.js (je suppose que application.js est rendu par un fichier de mise en page via javascript_include_tag ('application'), c'est pourquoi son rendu deux fois) .
Si le fichier js vit dans l'un de ces répertoires, et que vous supprimez votre javascript_include_tag du fichier erb … Cela devrait résoudre votre problème de double rendu.