Evidenziare i tab attivi con Ruby on Rails
Posted by Dibi Store Wed, 19 Sep 2007 09:53:00 GMT
Ormai tutti (o quasi) usiamo i tab per abbellire i nostri menu tramite CSS. Creare questi tab è facile e divertente, ci sono moltissimi esempi nella rete scaricabili gratuitamente.
Prendiamo ad esempio un segmento di file (x)html:
<ul> <li>tab1</li> <li>tab2</li> <li>tab3</li> </ul>
Quello che vogliamo fare, è trovare un modo dinamico e flessibile per aggiungere una classe 'active' al tab attivo.
Per fare questo potreste inserire la classe direttamente in ogni vista, ma ciò rende il tutto sicuramente poco portatile, invece è da preferirsi inserire il menù (utilizzato da tutte le viste) direttamente nel layout, e modificare il codice precedente nel seguente modo:
<ul> <li class="<%= controller.controller_name == 'welcome' ? 'active' : '' %>">tab1</li> <li class="<%= controller.controller_name == 'products' ? 'active' : '' %>">tab2</li> <li class="<%= controller.controller_name == 'customers' ? 'active' : '' %>">tab3</li> </ul>
In sostanza abbiamo inserito una condizione, che verifica il nome del controller in qui è eseguita l'azione. In sostanza, se il controller in qui ci troviamo è welcome, tab1 avrà la classe attiva, volendo potete aggiungere una classe differente se ne avete bisogno, per i tab che non sono attivi.
Questo metodo non è una novità, ma può aiutarvi notevolmente se non lo conoscevate, vi consiglio quindi di segnarlo eventualmente nei vostri segnalibri e di usarlo nel momento del bisogno.
Per finire, usando il codice controller.action_name, potete differenziare anche in base al nome dell'azione.

