2011-11-29 16 views
8

Sto usando Rails 3.1 e tra le attività Ho i file come questo:risorsa pre compilazione per file manifesto sottodirectory

assets 
    javascripts 
    admin 
     admin.js 
     a1.js 
    client 
     client.js 
     c1.js 

admin.js assomiglia a questo

// 
//= require jquery 
//= require jquery_ujs 
//= require a1 

Client.js assomiglia a questo

// 
//= require jquery 
//= require c1 

Tutto funziona correttamente in modalità sviluppo. Quando eseguo il rake delle risorse: precompila quindi non vedo alcun file javascript in public/assets. Vedo tutti i fogli di stile in pubblico/risorse.

Penso che questo abbia a che fare con il fatto che i file manifest (admin.js e client.js) in questo caso sono nella sottodirectory.

Quindi è vero questo rake asset: precompilare non guarda nelle sottodirectory?

Qualsiasi suggerimento su come risolvere questo problema. Preferisco avere i file nel modo in cui ho disposto perché ho un sacco di file javascript.

risposta

11

C'è una matrice di precompilazione nella configurazione di Rails che imposta quali file precompilare. application.js e application.css in qualsiasi directory.

Sarà necessario aggiungere i file alla matrice precompilare:

 
config.assets.precompile += ['admin/admin.js', 'client/client.js'] 

e dovrebbero essere accessibili tramite:

 
javascript_include_tag "admin/admin.js" 

e

 
javascript_include_tag "client/client.js" 
3

A rotaie 3.2.6 , quando gestisci risorse javascript in sottodirectory, puoi nominare il manifest per ogni sottodirectory 'index.js' (a differenza di OP 'admin.js' e 'Client.js'), e poi in config/ambienti/production.rb dicono:

config.assets.precompile += ['admin.js', 'client.js'] 

magia dietro le quinte sarà nella subdir di amministrazione e compilare secondo le specifiche nell'indice .js, in uscita su admin.js; allo stesso modo per il cliente.

Le attività saranno quindi accessibili tramite:

javascript_include_tag 'admin' 
Problemi correlati