2011-12-01 5 views
11

come aggiungo un contatore a un ciclo .each? Qualche modo semplice per farlo? Ho provato il sotto ma non sembra funzionare. Grazie!Come ottengo un contatore per un binario 3 "ogni do" ciclo?

<% @album.each do |e| %> 
    <%= e %> #my_counter_does_not_work :) 
    <%= link_to e.name, :controller => "images", :action => "album", :album_id => e.id, :album_name => e.name %> 
<% end %> 
+0

stai provando a scorrere un elenco? @album è una lista di qualcosa? con la sua denominazione sembra essere un singolo oggetto, che non può essere iterato perché un singolo oggetto non è iterabile per impostazione predefinita. Un po 'più informazioni qui aiuterebbe a diagnosticare meglio il tuo problema. – jaydel

+0

@album è un elenco di album da db – Francois

risposta

39

Uso each_with_index: l'indice sarà automaticamente il contatore (ma nota che inizia da 0 e non 1):

<% @album.each_with_index do |e, index| %> 
    <%= link_to e.name, :controller => "images", :action => "album", :album_id => e.id, :album_name => e.name %> 
<% end %> 
+0

grazie a questo lavorato :) – Francois

+7

A partire da Ruby 1.9.1 è possibile concatenare un '.with_index' su ogni metodo che restituisce un Enumeratore per ottenere lo stesso risultato. Puoi anche fornire un intero come argomento per rappresentare l'indice di partenza, se questo per qualche ragione non dovrebbe essere 0. – cvshepherd

+0

Buono a sapersi, grazie! –

Problemi correlati