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
- ?
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,