Può succedere di dover utilizzare template grafici diversi per metodi differenti di uno stesso controller. In prima analisi verrebbe da implementare una soluzione che prevede una chiamata esplicita al layout da utilizzare all’interno di ogni singola action.
Qualcosa del tipo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
class PostController < ApplicationController |
Esiste però un modo più semplice e DRY di implementare la stessa soluzione. Per selezionare il layout corretto da utilizzare Rails cerca una action chiamata “choose_layout”.
Definendo la propria versione di “choose_layout” è possibile gestire banalmente la scelta del layout come potete vedere nel codice che segue:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
class PostController < ApplicationController |
Questa action utilizza la variabile Rails action_name che contiene il nome dell’action corrente per decidere quale layout caricare.
Quindi se action_name vale ‘new’ o ‘edit’ verrà caricato il layout ‘admin‘, altrimenti per qualsiasi altra action verrà caricato il layout ‘standard‘.