La idea es utilizar los helpers...
Las vistas del sistema opté por escribirlas en haml. Encontré en los foros de haml una cosa que me pareció de lo mas interesante. Que era obvia pero no sé si por ser demasiado chobo (novato), no se me había ocurrido.
La cosa consiste en quitar de las vistas las llamadas directas a los helper que reciben una cantidad considerable de parámetros. ¿Quitarlos a donde?; pues a otro helper y ponerle un nombre bien diciente, que realmente al leer el código de las vistas uno entienda que es lo que se está mostrando ahí.
Miren por ejemplo este código que es una parte de una de las vistas que tenía yo antes...
<% for empresa in @empresas_arr %>
<li>
<%= link_to_remote empresa.nombre, :update => 'productos_div', :url => { :action => :mostrar_productos, :id => empresa.id } %>
</li>
<% end%>
Cuando uno lee eso en una vista no lo entiende fácilmente, es claro que se está iterando un arreglo de empresas, pero entonces se tiene uno que poner a analizar el "link_to_remote", para poder entender que sucede en cada iteración.
Sacar el link_to_remote a un helper
Queda mucho mejor poner el link_to_remote en un helper, algo como:
<% for empresa in @empresas_arr %> <li> <%= link_mostrar_productos(empresa) %> </li> <% end%>
..y el helper quedaría algo así como...
module CalificarHelper
def link_mostrar_productos(empresa)
link_to_remote empresa.nombre,
:update => 'productos_div',
:url => { :action => :mostrar_productos,
:id => empresa.id }
end
end
Esto es sin duda algo mucho mas elegante... espero sus comentarios.
PD: para los que ya lo notaron, los ejemplos aunque dije que encontré la técnica en los foros relacionados a haml, están escritos en ERb. (la mayoría de la gente utiliza ERb y la técnica es igualmente aplicable).