2009-07-19 6 views

Répondre

16

Vous pouvez utiliser un opérateur ternaire:

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

Mais, selon ce que vous essayez de faire, je devine un each_with_index serait plus approprié

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

Ah bien, je suppose que la deuxième option est ce que je cherchais. – Zepplock

+0

Est-il également possible d'attribuer une valeur initiale à "n"? – Zepplock

+2

Attribuer une valeur initiale, puis incrémenter de 1 à chaque fois? L'index n'est pas un compteur - c'est un index. Si vous voulez l'augmenter par un décalage fixe, il suffit de l'ajouter lorsque vous imprimez: <%= n + 5 %> – zaius

0

Um.

n = @items.size 
+0

Non, @ items.size est une constante (dans une portée de boucle) – Zepplock

+0

Ah, je suppose que vous voulez dire que vous faites quelque chose ] sinon [/ i] dans la boucle, pas montré dans votre exemple? –

5

Vous pouvez également compter sur la coercition nulle de ruby ​​pour un nombre entier qui aboutit à zéro.

<% for item in @items %> 
    <%= n = n.to_i + 1 %> 
<% end %> 
Questions connexes