#Snippets: Enumerar records individualmente en las views de Rails


Esta es una técnica útil que me saqué de la manga para ennumerar records  individualmente en las vistas de Rails, srive para mostrar algo así como "Record #1, Record #2, Record #3" etc. en la vista show (o bien, cualquiera) de un record individual de la base de datos en Rails. Mi ORM es Mongoid (en la app donde probé esto)  pero supongo que funciona para cualquier tipo de ORM usando el mismo snippet, no tendría porqué no funcionar (aunque me parece que usando DB's relacionales hay alternativas más elegantes a esta para lograr el mismo objetivo) Veamos entonces el ejemplo:

<% current_id = @object.id

   Mymodel.all.each_with_index do |indexed_object, i|
   if indexed_object.id.to_s == current_id.to_s %>

  <h1>Object #<%= "#{i.to_i + 1}" %></h1>

<% end %>
<% end %>

Creo que el snippet habla por si solo, pero por si no, lo explico:

Primero obtenemos el ID del objeto "actual", (del que queremos obtener su ennumerador) y lo guardamos en una variable llamada "current_id". corremos el loop ennumerador y le pasamos un condicional para que cuando llegue el momento en que se tope con el id del objeto en cuestión añada el número correspondiente a dicho objeto en nuestro H1 que reza algo como "Object #X" (Reemplazando esa X por el número). Nótese que convertimos el índice (variable "i") a número íntegro con el método "to_i" (lo mismo da que la variable se llamase "i" o "index", igual usaríamos to_i no se confundan por las 2 "i") y le sumamos 1, ¿Porqué? Bueno, porque el ennumerador en un array de ruby empieza en 0 y no queremos tener algo como "Venta #0" en nuestra vista generalmente.