La configuration suivante génère ReferenceError: jQuery is not defined et les multiples erreurs TypeError: $ is undefined suivantes, conduisant ainsi à des scripts qui ne se déclenchent pas.
Appels Gemfile
<script>
$(document).foundation();
</script>
qui se traduit par Gemfile.lock en
<script>
//<![CDATA[
$("input[type=radio]").on("change", function() { [...]
tandis que application.js est défini avec
// require jquery3 // require jquery-ujs // require jquery-ui/widgets/autocomplete // require jquery.Jcrop // //= require rails-ujs //= require autocomplete-rails //= require activestorage //= require turbolinks //= require foundation //= require rails.validations
Ainsi, des éléments comme
jquery-rails (4.3.5) rails-dom-testing (>= 1, < 3) railties (>= 4.2.0) thor (>= 0.14, < 2.0) jquery-ui-rails (6.0.1) railties (>= 3.2.16)
et
gem 'jquery-rails' gem 'jquery-ui-rails' gem 'rails-jquery-autocomplete'
ne se déclenche pas, suite à TypeError: $ is undefined .
Une autre application de rails 5.2 est définie de la même manière et ne génère pas de telles erreurs. Quel est le problème avec cette configuration (ou que me manque-t-il)?
3 Réponses :
Dans votre application.html.erb, avez-vous cette ligne?
application.html.erb final
//= require jquery
Et essayez d'écrire dans votre application.js de cette façon (peut-être que vous avez oublié égal avant jquery)
<%= javascript_include_tag 'application', 'data-turbolinks-track': true %>
le fichier d'application a <% = javascript_include_tag 'application', 'data-turbolinks-track': 'reload'%> Bon ramassage sur le signe égal, il manquait!
Dans l'application rails
jQuery n'est pas inclus par défaut. Ajoutons-le au Gemfile.
$(document).ready(function() {
console.log("All working fine");
})
Le gem jquery-rails contient les fichiers jQuery. Installez le gem avec
//= require jquery3 //= require jquery_ujs //= require_tree .
Pour inclure les fichiers jQuery dans notre application nécessitera quelques fichiers sur app / assets / javascripts / application.js
Vous devez supprimer rails-ujs car vous utilisez jquery_ujs dans le même but.
bundle install
dans la question, il est clairement indiqué que jquery est déclaré dans le Gemfile et que .lock l'a installé ... Ce n'est pas le problème; le signe égal manquant était.
Ok, j'ai votre problème de configuration. vous avez oublié égal avant jquery3. Merci
Essayez avec ceci, ce que j'ai fait a été de supprimer les turbolinks. Si cela fonctionne, il y a un problème avec la façon dont vous chargez les bibliothèques dans un ordre incorrect.
// require jquery3 // require jquery-ujs // require jquery-ui/widgets/autocomplete // require jquery.Jcrop // //= require rails-ujs //= require autocomplete-rails //= require activestorage //= require foundation //= require rails.validations