A veces, nuestro archivo layout puede desordenarse si tenemos varias notificaciones flash. Debido a que tenemos que verificar que ningún mensaje sea nil antes de intentar mostrarlo dentro de un tag de párrafo, cada mensaje toma tres líneas de código.
<html>
<!-- (head snipped) -->
<body>
<h1>ASCIIcasts</h1>
<% unless flash[:error].nil? %>
<div id="error"><%= flash[:error] %></div>
<% end %>
<% unless flash[:notice].nil? %>
<div id="notice"><%= flash[:notice] %></div>
<% end %>
<%= yield %>
</body>
</html>
Los mensajes flash
en el archivo layout.
Hay una forma más sencilla de hacer esto. Consiste en hacer un loop sobre flash, y de esa manera, mostrar cada notificación flash. El código se vería así:
<% flash.each do |key,msg| %>
<%= content_tag :p, msg, :id => key %>
<% end %>
content_tag
toma tres parámetros: el primero es el nombre del elemento, el segundo es el contenido que aparece entre los tags de principio y fin del elemento y el tercer parámetro es un hash de opciones que serán los atributos del elemento. El código de arriba es mucho mas corto que el original y tiene como agregado, la ventaja de que cualquier otra notificación flash que agreguemos será automáticamente mostrada.