2010-02-27 13 views
5

E 'nella mia comprensione che posso specificare un layout per un controller mettendoSpecificare layout per alcuni controller in Ruby on Rails

layout 'mylayout' 

nel file di controllo. Comprendo inoltre che posso specificare alcune azioni per cui il layout verrà invocato per :only e :except come: layout 'mylayout',: only => [: index,: new] o layout 'mylayout',: tranne => [: indice,: new]

quello che mi chiedo è, posso mettere layout 'mylayout' nel mio controller dell'applicazione e specificare che deve essere reso solo per alcuni controller con qualcosa di simile :only_controller e :except_controller, o devo specificare layout 'mylayout' in ogni controller voglio renderlo visibile?

La ragione di questo è che ho un paio di controller che si occupano della sezione amministrativa del mio sito, e mi piacerebbe avere un layout diverso per loro.

risposta

2

I controller di amministrazione ereditano da un AdminController e creano un layout admin.html.erb. In questo modo tutti i controller per la tua sezione di amministrazione avranno questo layout.

+0

Ma non ho bisogno di un controller vero e proprio amministratore fisica - non esiste. Se lo creo, dovrà avere un back-end del database? –

+0

Non c'è modo che i controllori siano associati al database :) pensalo come una classe base astratta per i tuoi amministratori. Renderà anche le cose più chiare, perché quando vedi un controller che eredita da 'AdminController' capirai subito che si tratta di un controller dalla sezione admin. Inoltre, potrebbe essere che avrai bisogno di alcuni 'before_filter 'comuni, e una classe base sarebbe un posto perfetto per loro. –

+0

grazie mille! –