2009-07-19 11 views

Respuesta

16

Se puede utilizar un operador ternario:

<% for item in @items %> 
    <%= n = n ? n+1 : 1 %> 
<% end %> 

Pero, dependiendo de lo que estamos tratando de hacer, supongo que un each_with_index sería más apropiado

<% @items.each_with_index do |item, n| %> 
    <%= n %> 
<% end %> 
+0

Ah, bien, supongo que la segunda opción es lo que estaba buscando. – Zepplock

+0

¿Existe alguna manera de asignar un valor inicial a "n"? – Zepplock

+2

¿Asignar un valor inicial y luego incrementar en 1 cada vez? El índice no es un contador, es un índice. Si desea aumentarlo con un desplazamiento fijo, simplemente añádalo cuando imprima: <%= n + 5 %> – zaius

0

Um.

n = @items.size 
+0

No, @ items.size es una constante (dentro de un alcance de ciclo) – Zepplock

+0

Ah, supongo que quiere decir que está haciendo algo [i ] else [/ i] con él en el bucle, no se muestra en su ejemplo? –

5

También podría confiar en ruby's nil coercion en un número entero que dé como resultado cero.

<% for item in @items %> 
    <%= n = n.to_i + 1 %> 
<% end %> 
Cuestiones relacionadas