2011-10-11 18 views
13

Ho sviluppato un'applicazione Rails 3.1 costituita da moduli Ajda CRUD al 100% per l'immissione di utenti e clienti. Ho creato due modelli separati, controller, viste, ecc. Le viste per ogni modello contengono file jQuery per creare aggiornamenti di modifica e distruzione. Il problema è quando eseguo qualsiasi operazione che esegue un'operazione remota, viene chiamato due volte. Posso confermare che ciò accade nella vista console di firebug e nell'output di WEBrick. Qualcuno può aiutare a rintracciare cosa è successo qui? Cosa provocherebbe che i binari elaborassero ciascuna chiamata due volte?Rails 3.1 richieste remote inviate due volte

+0

un po 'di codice aiuterà a capire meglio la prospettiva ... ad es. inserisci il codice che viene chiamato due volte – Rafay

+0

Questa è un'intuizione - il tuo codice JavaScript o ['jquery-rails'] (https://github.com/rails/jquery-rails) sono inclusi nella pagina due volte? Controlla la cartella public/assets se hai eseguito una precompilazione. – Anurag

+0

@Anurag Questo è quello che credo stia accadendo. Ho eseguito "bundle exec rake assets: precompilare" prima che ciò accadesse. Devo solo rimuovere quel file? – ctilley79

risposta

13

Se sono state precompilate le risorse e in esecuzione in modalità di sviluppo, i JavaScripts verranno inclusi due volte nella pagina.

Rimuovere tutto da public/assets se in modalità di sviluppo.

+0

Ho provato a seguire la soluzione (ovvero, per eliminare il percorso pubblico/attivo e riavviare il mio server) ma sto ancora riscontrando il problema spiegato nella domanda. Sto dimenticando di fare qualcosa? – user12882

+2

Si tratta di un problema di memorizzazione nella cache. ripristinare la cache del browser. Mi è successo prima che lo scoprissi – ctilley79

+2

Sapevi che c'è un comando di rake per farlo? Basta scrivere: rake assets: clean nel tuo terminale. ;) – Kulgar

19

L'aggiunta di config.serve_static_assets = false a development.rb impedisce il caricamento dei file da /public/assets.

In realtà ho bisogno di precompilare localmente perché la mia modalità test utilizza solo asset statici da /public/assets - i test stanno recuperando possibili problemi di asset di produzione. Come? Basta impostare config.assets.compile = false e config.serve_static_assets = true nella configurazione test.rb.

+1

Da Rails 4 in poi, 'config.serve_static_assets' è deprecato. Usa invece 'config.serve_static_files'. – Jin