2009-07-19 14 views

Antwort

16

Sie können einen ternären Operator verwenden:

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

Aber, je nachdem, was Sie versuchen zu tun, ich bin ein each_with_index zu raten wäre angemessener

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

Ah schön, ich denke, die zweite Option ist, was ich gesucht habe. – Zepplock

+0

Gibt es auch eine Möglichkeit, einen Anfangswert für "n" zu vergeben? – Zepplock

+2

Einen Anfangswert zuweisen und dann jedes Mal um 1 erhöhen? Der Index ist kein Zähler, sondern ein Index. Wenn Sie es um einen festen Offset erhöhen wollen, fügen Sie es einfach beim Drucken hinzu: <%= n + 5 %> – zaius

0

Um.

n = @items.size 
+0

Nein, @ items.size ist eine Konstante (innerhalb eines Schleifenbereichs) – Zepplock

+0

Ah, ich nehme an, Sie meinen, dass Sie etwas tun [i ] sonst [/ i] damit in der Schleife, in Ihrem Beispiel nicht gezeigt? –

5

Sie könnten sich auch auf die Nullkompensation von Ruby auf eine ganze Zahl verlassen, die zu Null führt.

<% for item in @items %> 
    <%= n = n.to_i + 1 %> 
<% end %> 
Verwandte Themen