homeASCIIcasts

18: Notificaciones flash 

(view original Railscast)

Other translations: En It Fr

Other formats:

Written by Aldo Escudero (aldoescudero.com.ar)

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.