2012-05-11 21 views
11

Fino a ieri jQuery si stava caricando perfettamente nella mia app Rails. Stavo giocando con la gemma debugger/ruby-debug installata. Come probabilmente saprai, ci sono problemi con la gemma del debugger in Rails 3 e non sono riuscito a ottenere l'installa delle dipendenze, quindi ho rimosso le gemme dal mio Gemfile. Da allora, durante il caricamento del mio sito, jQuery non si sta caricando. Questi sono i messaggi che vedo in console:Perché jQuery non viene caricato nella mia app Rails 3.2.3?

assets/jquery_ujs.js?body=1:377Uncaught ReferenceError: jQuery is not defined 
bootstrap-transition.js:24Uncaught TypeError: undefined is not a function 
bootstrap.js:3Uncaught ReferenceError: jQuery is not defined 
welcome:210Uncaught ReferenceError: $ is not defined 

Ed ecco il mio file application.js:

//= require jquery 
//= require jquery_ujs 
//= require twitter/bootstrap 
//= require_tree . 

Se carico jQuery in modo esplicito nei layout/application.html.erb, in questo modo, esso works:

<%= javascript_include_tag "http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js" %> 
<%= javascript_include_tag "application" %> 

Qualche idea su cosa posso fare per risolvere questo problema e caricare nuovamente jQuery? Guardando in .rvm/gems/ruby-1.9.3-p125/gems/jquery-rails-2.0.2/vendor/assets/javascripts posso vedere jquery.js e jquery.min.js sono ancora lì.

+0

Hai ancora la riga 'jquery-rails'' gem nel tuo gemfile? –

+0

Sicuro. Perfino una gemma ha installato 'jquery-rails' con successo. –

+0

Hai provato a inserire le librerie jquery nella cartella app/assets/javascripts? – uday

risposta

11

Grazie @Djj. Riordinare il mio albero application.js sembra aver risolto il problema. Ecco il mio albero rivisto:

//= require jquery_ujs 
//= require jquery 
//= require twitter/bootstrap 
//= require jquery.placeholder 
//= require_tree . 
+1

Qualche idea sul perché questo funziona? – tibbon

+0

questo ha risolto anche il mio problema! – kibaekr

0

Dopo un lungo periodo trascorso, questo ha risolto il mio problema con l'errore.

Assicurarsi che Jquery venga caricato solo una volta.

Includere gem 'jquery-rails' in Gemfile e fare $ bundle install

Assicurati di includere questi in app/assets/javascripts/application.js file.

//= require jquery 
//= require jquery_ujs 

La sintassi quando sbagliato come // require jquery porta a non caricare jQuery.

Se tutto è incluso correttamente, l'origine della pagina del file html deve mostrare tutti i file di origine inclusi.

Per me, ho avuto un problema perché stavo caricando in modo esplicito i sorgenti del plug-in jquery da google in application.html.erb sotto app/views/layout oltre a richiedere il file application.js in app/assets/javascript. Ciò ha causato nuovamente la definizione di jquery e pochi errori come placeholder() non definiti, oApi non definiti per null.

4

Nel mio caso il problema era dovuto al caricamento asincrono del file javascript.

<%= javascript_include_tag "application", :async => true %> 

Passaggio ai

<%= javascript_include_tag "application" %> 

risolto il problema.

+0

Questo lo ha risolto anche per me. Mi piacerebbe comunque sfruttare async, qualche idea del perché stava causando problemi? – Marklar

Problemi correlati