A volte i nostri layout possono complicarsi a causa dei vari messaggi flash. Ogni messaggio richiede tre linee di codice poichè vogliamo controllare che ogni messaggio non sia nil prima di cercare di mostrarlo all’interno di un tag di paragrafo.
<html>
<!-- (head soppresso) -->
<body>
<h1>ASCIIcasts</h1>
<% unless flash[:notice].nil? %>
<div id="notice"><%= flash[:notice] %></div>
<% end %>
<% unless flash[:notice].nil? %>
<div id="notice"><%= flash[:notice] %></div>
<% end %>
<%= yield %>
</body>
</html>
Messaggi flash
nel file di layout.
Esiste un modo più semplice per fare questo controllo, che consiste nel iterare fra gli elementi flash, e mostrare ogni messaggio in questo modo. Il codice è il seguente:
<% flash.each do |key,msg| %>
<%= content_tag :p, msg, :id => key %>
<% end %>
content_tag
accetta tre parametri:
- il nome dell’elemento.
- il contenuto da mostrare fra il tag di apertura dell’elemento e quello di chiusura.
- un hash di opzioni che diverranno gli attributi dell’elemento.
Il codice mostrato sopra è molto più conciso rispetto all’originale e ha il vantaggio che ogni altro messaggio che andremo ad aggiungere sarà mostrato automaticamente (senza modifiche al layout).