2011-08-22 12 views
5

Sto tentando di aggiornare la mia app a Rails 3.1 e ho un bel po 'di file Javascript personalizzati che sto cercando di migrare alla nuova pipeline delle risorse .che richiedono i file di asset dalle sottodirectory del percorso di asset

Il mio attuale (cioè pre-3.1) struttura di directory ha qualcosa come:

public/ 
    foo/ 
     model.js 
     controller.js 
     etc... 

Quindi, sto cercando di spostare questi per lib/attività/javascript e mantenere il foo/sottodirectory intatta (piuttosto che fare foo_model.js, foo_controller.js, ecc.).

Nei miei application.js ho provato a fare:

//= require foo/model 

e

//= require 'foo/model' 

Ma questi non funzionano. Rotaie sempre mi dà una pagina di errore e dice:

couldn't find file 'foo/model.js' 

Ho fatto test che le cose si fanno correttamente compresi se non sono nella sottodirectory, quindi so che non è solo che la mia cartella lib/attività non è nella includere percorso o qualcosa. Quindi immagino che mi stia chiedendo se c'è un modo per farlo, o dovrei semplicemente appiattire le directory e usare foo_model.js e così via?

risposta

6

Sembra rotaie solo aggiungere un livello di sottodirectory a percorsi beni

È possibile controllare con percorsi di corrente eseguendo Rails.application.config.assets.paths sulla console di rotaie

aggiungere percorso assoluto delle cartelle a application.rb come

config.assets.paths += ["/path/to/lib/assets/javascript/foo"] 
+0

Quindi, secondo la pagina web utilizzo Sprockets (http://getsprockets.org/installation_and_usage) si suppone di essere in grado di fare Mi piace: // = richiedere Ma questo non sembra funzionare. Non sono sicuro che sia un bug o se sto solo facendo qualcosa di sbagliato. Mi sembra più ideale, ma la tua soluzione è quella che funziona davvero, quindi ti sto dando credito. :) – bratsche

1

Non sono sicuro del motivo per cui le rotaie aggiungano solo un livello di sottodirectory, ma è possibile aggiungere sicuramente percorsi (pienamente qualificati) alla pipeline in config/application.rb. I documenti portano alla risposta: http://guides.rubyonrails.org/asset_pipeline.html#asset-organization

Ad esempio:

config.assets.paths << "#{Rails.root}/app/assets/flash"

Problemi correlati