Contar las llamadas a un partial

Hola, estaba con unos “ejercicios” de rails y me he quedado bloqueado
en una tontería, se lo cuento con un ejemplo para ver si me pueden
orientar.

controller

@posts = Post.find(:all)

view

render :partial => @posts

partial

<%= post.name %>

Como podría obtener delante de <%= post.name %> el numero de post,? no
me refiero al id, me refiero al orden consecutivo en que van siendo
“mostrados”, un resultado tal que asi
1 primer post
2 segundo post
3 …
4 …

Una opción fácil seria algo como
<% i = 0 %>
<% @posts.each do |p| %>
<%= i %>
<%= render :partial => ‘posts’, :locals => { :post => p } %>
<% i = i + i %>
<% end %>

pero esta manera es muy “fea”, saben de alguna otra manera?

Muchas Gracias
Saludos.

Hola,

No se si me equivoco pero creo que con esto

enum.each_with_index {|obj, i| block }

Calls block with two arguments, the item and its index, for each item in
enum.

hash = Hash.new
%w(cat dog wombat).each_with_index {|item, index|
  hash[item] = index
}
hash   #=> {"cat"=>0, "wombat"=>2, "dog"=>1}

o sea en tu caso

<% @posts.each_with_index do |p,i| %>
<%= i %>
<%= render :partial => ‘posts’, :locals => { :post => p } %>
<% end %>

Saludos

alarkspur
escribió:> Hola, estaba con unos “ejercicios” de rails y me he quedado bloqueado

hola,

render :partial => @posts

partial

<%= post.name %>

Como podría obtener delante de <%= post.name %> el numero de post,? no
me refiero al id, me refiero al orden consecutivo en que van siendo

si no ha cambiado nada (la última vez que lo usé fue en rails 1.1.6) ,
en un partial con una collection se crea una variable especial _counter

en tu caso
sería
post_counter

y eso debería darte el índice del objeto por el que se va iterando

saludos,

javier ramírez

Puedes iterar con @posts.each_with_index. Tienes la doc de
each_with_index en la API de ruby:

module Enumerable - RDoc Documentation

Estoy pensando que quizá no necesitas todo esto (aunque está bien
saber estas cosas), ¿no te bastaría con usar las etiquetas

    y
  1. ?

En Rails 2.2.2 si funciona utilizando el _counter dentro de un partial,
tal y como José Ramirez ha indicado.

Muchas gracias a todos por las respuestas, muy amables.

Saludos.

El 01/04/2008, a las 19:11, javier ramirez
escribió:

hola,