2012-10-13 12 views
5

私はショービューでそれぞれループしているアイテムのリストを持っています。これはまったく問題ありません。しかし、すべてのループ(i = 0、私は+あなたがドリルを知っている)で増分する各項目の番号を取得したいと思います。View Railsでのカウント

これでRailsでどうやったらいいですか?これは私が今入手したものです:

<% i = 0 %> 
<% @trip.triplocations.each do |tl| %> 
    <article id="<%= dom_id(tl) %>"> 
    <strong> <%= tl.title %> </strong> 
     <p> 
     <%= tl.description %> 
     </p> 
    </article> 
<% end %> 

答えて

11

ビューで変数をインスタンス化する代わりに#each_with_indexを使用してください!

<% @trip.triplocations.each_with_index do |tl, i| %> 
    <article id="<%= dom_id(tl) %>"> 
    <strong> <%= i %>. <%= tl.title %> </strong> 
     <p> 
     <%= tl.description %> 
     </p> 
    </article> 
<% end %> 
+0

これは確かにうまくいった!しかしながら; 1で私を始めることは可能ですか?私は視覚的な番号付けとしてそれを使用したいので。 – CaptainCarl

+2

このように「<%= i+1 %>」のように1ずつ増やすことができます。これはうまくいくはずですが、詳細はこちら[こちら](http://stackoverflow.com/questions/5646390/ruby-each-with-index-offset)をご覧ください。 –

+0

十分な公正、ありがとう! – CaptainCarl

0

おそらくこの種のコードが必要です。

<% i = 0 %> 
<% @trip.triplocations.each do |tl| %> 
    <article id="<%= dom_id(tl) %>"> 
     <strong> <%= tl.title %> </strong> 
     <p> 
      <%= i %> 
      <%= tl.description %> 

     </p> 
    </article> 
    <% i = i + 1 %> 
<% end %> 

注:

あなたはどこでもあなたがループ内たいコード

<%= i %> 

を配置することができます。

0

Rubyで何++演算子はありません。

array = 'a'..'d' 

array.each_with_index do |element, i| 
    puts "#{i} #{element}" 
end 

行うための別の方法があります:しかし、あなたはそのための便利な方法がすでに存在するため、それを行うべきではありません

array = 'a'..'d' 

i = 0 
array.each do |element| 
    puts "#{i} #{element}" 
    i += 1 
end 

プリント

0 a 
1 b 
2 c 
3 d 

:代わりに、+= 1を使用しますRails特有のものです。パーシャルを使ってコレクションをレンダリングすると、object_counter変数が使用できます。ここで、 "object"はモデル名です。例:

<%= render @trip.triplocations %> 

<% # in views/triplocations/_triplocation.html.erb %> 
<%= triplocation_counter %> 
<%= triplocation.title %> 
関連する問題