Descubriendo el content_for
10 Abr 07El otro día vi un Railscast sobre el content_for y sus posibilidades, y la verdad es que me gustó mucho. Voy a explicarlo con un ejemplo, porque la teoría no me la sé.
Imaginad que tenemos una acción de un controlador que requiere de una hoja de estilos especial, o de un Javascript especial, o que incluye un feed que el resto de acciones no tienen.
Para este tipo de casos podemos utilizar un bloque content_for y dejar algo muy limpio.
La vista de la acción podría ser así:
<% content_for :head do -%>
<%= javascript_include_tag :my_specific_javascript %>
<% end -%>
<h2>Cabecera de la vista</h2>
Contenido contenido contenido....
Y en el layout simplemente debemos de incluír la llamada al bloque :head, tal que así:
<html>
<head>
<title>Mi title</title>
<%= javascript_include_tag :defaults %>
<%= yield :head %>
</head>
<body>
<%= yield %>
</body>
</html>
Lo bueno, es que el yield :head carga un contenido específico para cada acción que lo definamos, y si no lo definimos no carga nada. Lo cuál evita enguarrar el layout con ifs a tutiplén.
Lo malo es tener que incluír los requisitos de CSS, Javascript o lo que sea en la propia vista de una acción, que no me resulta del todo elegante.
¿Qué pensáis?

4 comentarios