6

ショービューのそれぞれにループしているアイテムのリストがあります。これはすべて完全に問題ありません。ただし、ループごとに増加する各アイテムの前の番号を取得したいと思います(i = 0、i ++あなたはドリルを知っています)。

さて、Railsでこれを行うにはどうすればよいですか?これは私が今までに得たものです:

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

3 に答える 3

13

ビューで変数をインスタンス化する代わりに#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 %>
于 2012-10-13T06:07:52.627 に答える
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 %>

ループ内の好きな場所。

于 2012-10-13T06:07:42.533 に答える
0

++Ruby には演算子がありません。代わりに次を使用します+= 1

array = 'a'..'d'

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

版画

0 a
1 b
2 c
3 d

ただし、そのための便利な方法が既にあるため、これを行うべきではありません。

array = 'a'..'d'

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

Rails 固有の別の方法があります。パーシャルを使用してコレクションをレンダリングすると、「オブジェクト」がモデル名である object_counter 変数が使用可能になります。例えば:

<%= render @trip.triplocations %>

<% # in views/triplocations/_triplocation.html.erb %>
<%= triplocation_counter %>
<%= triplocation.title %>
于 2012-10-13T06:15:51.980 に答える