- Learn
- Guida Ruby On Rails
- I Layout in Ruby on Rails
I Layout in Ruby on Rails
Se avete un minimo di spirito d'attenzione, avrete notato che la directory views
non contiene solo una sottodirectory chiamata home
ma anche una chiamata layouts
. I layout sono una caratteristica abbastanza peculiare di Rails, e sono pensati per raccogliere codice condiviso tra le diverse pagine di un controller o di un'intera applicazione.
La situazioni in cui si usano i layout sono quelle in cui si vuole avere una sorta di cornice nella quale inserire il corpo delle pagine. Ad esempio, potreste volere che all'inizio di tutte le pagine sia presente un header, poi un menu che permetta di navigare nel sito, ed alla fine di tutte le pagine delle note sul copyright. L'approccio classico che si userebbe con altri ambienti di sviluppo sarebbe di creare un file per contenere l'header, poi uno per il menu ed infine uno per il footer, e poi di includerli in ogni singola pagina che dovesse usarli.
Rails invece usa un solo file, il layout, che contiene sia l'header sia il menu sia il footer, più uno specie di segnaposto in cui verrà infilato il contenuto della pagina. Per capire meglio, creeremo un file app/views/layouts/application.rhtml
fatto in questo modo:
<html>
<head>
<title> HForum </title>
</head>
<body>
<%= @content_for_layout %>
<div>
<small>Powered by Ruby On Rails</small>
</div>
</body>
</html>
come vedete è un file .rhtml come gli altri, solo che fa riferimento ad una variabile @content_for_layout
. Questo è il segnaposto di cui parlavamo prima, ma ormai conosciamo il funzionamento dei file rhtml e quindi possiamo capire cosa sia in realtà: si tratta di una normale variabile, che non fa altro che contenere il risultato del processing delle singole pagine.
Poiché la gestione è invertita rispetto al solito (è il layout che si occupa delle pagine, non le pagine che gestiscono header e footer) è possibile velocizzare molto lo sviluppo, in quanto non dobbiamo preoccuparci di scrivere in ogni pagina quali file deve caricare, con tutti i problemi di manutenibilità e codice ridondante che questo comporta, ma ci basta, come al solito, seguire le convenzioni di Rails.
Come fa Rails ad associare un layout ad un'azione? Il meccanismo è banale, se dentro la directory app/views/layouts, create un layout chiamato mio_controller.rhtml
, esso verrà usato automaticamente per tutte le azioni definite in MioController
. Se invece, come abbiamo appena fatto, definite un layout application.rhtml
esso verrà usato come default per l'intera applicazione. Sarà poi ovviamente possibile disabilitare il layout per una singola azione, come vedremo più avanti, per far si che non compaia, ad esempio, uno spezzone di html in un'azione che gestisce i feed.
Un layout è una vista come le altre, e questo significa che potete accedere a tutte le variabili d'istanza definite normalmente dalle azioni. Questo è molto utile per lasciare degli elementi fissati ma con contenuto differente, come ad esempio un tag <title>
che abbia un valore dipendente dalla pagina. Nel nostro caso basterebbe cambiare l'inizio del layout in questo modo:
<head>
<title> <%= @title %> </title>
</head>
ed aver cura di impostare la variabile @title
in ogni azione.
Se vuoi aggiornamenti su I Layout in Ruby on Rails inserisci la tua email nel box qui sotto:
Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.
La tua iscrizione è andata a buon fine. Se vuoi ricevere informazioni personalizzate compila anche i seguenti campi opzionali:
Compilando il presente form acconsento a ricevere le informazioni relative ai servizi di cui alla presente pagina ai sensi dell'informativa sulla privacy.
I Video di HTML.it
React vs Angular: questione di punti di vista
Angular 2 e ReactJS rappresentano oggi la nuova frontiera dello sviluppo javascript frontend. Ma in cosa si differenziano e quali […]