Skip to content

Simplificacion Vistas Rails 2 0

Hoy me voy a dedicar a simplificar un poco mi aplicación Rails que estoy desarrollando para mi proyecto fin de carrera en la Universidad Carlos III de Madrid.

De momento esta en fase pre-alfa se podría decir, pero pronto estará accesible a todos para que al menos la podáis echar un vistazo.

Para la simplificación de vistas me he basado en un capítulo de la web railscasts el episodio denominado simplify views with rails 2.

Partiendo de catalogs/show.html.erb

<h1>Catalog <%=h @catalog.id %></h1>
<div class="details">
  <p>
    <b>Type </b>
    <%=h @catalog.type_catalog %>
  </p>
  <p>
    <b>User:</b>
    <%=h @catalog.user.login %>
  </p>
  <p>
    <b>Created at:</b>
    <%=h @catalog.created_at %>
  </p>
  <p>
    <b>Updated at:</b>
    <%=h @catalog.updated_at %>
  </p>
</div>

Podemos sustituirlo por el código del partial catalogs/_catalog.html.erb<

<%= render :partial => 'catalog', :object => @catalog %>

Pero lo que podemos hacer para reducir aún más el código es pasar directamente el objeto al partial, rails se encarga de ver que clase de objeto y buscar el partial asociado.

<%= render :partial =><del> </del>@catalog %>

Finalmente modificamos el partial ligeramente:

<% div_for catalog do %>
<h1>Catalog <%=h catalog.id %></h1>
<div class="details">
  <p>
    <b>Type </b>
    <%=h catalog.type_catalog %>
  </p>
  <p>
    <b>User:</b>
    <%=h catalog.user.login %>
  </p>
  <p>
    <b>Created at:</b>
    <%=h catalog.created_at %>
  </p>
  <p>
    <b>Updated at:</b>
    <%=h catalog.updated_at %>
  </p>
</div>
<% end %>

La etiqueta div_for incluye una etiqueta div con class=”catalog” e id=”catalog_#{catalog.id}”

Un saludo