1
votes

Configuration de RailsGem conduisant à des erreurs non définies

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)?


0 commentaires

3 Réponses :


1
votes

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 %>


1 commentaires

le fichier d'application a <% = javascript_include_tag 'application', 'data-turbolinks-track': 'reload'%> Bon ramassage sur le signe égal, il manquait!



0
votes

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


2 commentaires

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



0
votes

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


0 commentaires