2012-10-15 2 views
6

Ho un'app Rails 3 in cui sto tentando di popolare una variabile javascript con ogni Nation nel mio database (meno di 300 nazioni) come oggetto JSON. Questa è la linea rilevante nel mio file nations.js.erb:Accesso a un modello dal file js.erb durante la precompilazione

_this.nations = <%= Nation.all.to_json :only => [:id], :methods => :text %>; 

Quando chiamo il mio file js in un browser, /assets/users.js che fa un richiede delle nazioni il file, la variabile _this.nations è popolato perfettamente. Quando provo a fare un precompilare ottengo il seguente:

$> rake assets:precompile 
$> rake aborted! 
uninitialized constant Nation (in nations.js.erb) 

Quindi la mia domanda è questa: è possibile fare riferimento al modello Nation, o di qualsiasi modello, all'interno del file js.erb per precompilare? Ho anche provato a usare il mio NationsHelper ma il mio errore è appena cambiato in costante Nationsst non inizializzato.

Sono relativamente nuovo al RoR quindi se sono necessarie informazioni pertinenti che non ho fornito, basta chiedere.

risposta

7

Se avete config.assets.initialize_on_precompile insieme a false da qualche parte quindi provare le consente

config.assets.initialize_on_precompile = true 
+0

Questo l'ha risolto, grazie mille per il tuo aiuto. –

+0

Questo sorprendentemente * non * influenza il problema intialize_on_precompile di Heroku. – Trip

0

Perché non si effettua la chiamata nel controller

regolatore

@nations = Nation.all 

nations.js. erb

_this.nations = <%= @nations.all.to_json :only => [:id], :methods => :text %>;