Подтвердить что ты не робот

Как определить последний объект в каждом цикле?

В вашем типичном каждом цикле в Rails, как определить последний объект, потому что я хочу сделать что-то другое, чем остальные объекты.

<% @stuff.each do |thing| %>

<% end %>
4b9b3361

Ответ 1

@stuff.each do |s|
  ...normal stuff...
  if s == @stuff.last
    ...special stuff...
  end
end

Ответ 2

Интересный вопрос. Используйте each_with_index.

len = @stuff.length

@stuff.each_with_index do |x, index|
 # should be index + 1       
 if index+1 == len
 # do something
  end
end

Ответ 3

<% @stuff[0...-1].each do |thing| %>
  <%= thing %>
<% end %>
<%= @stuff.last %>

Ответ 4

Несколько наивный способ справиться с этим, но:

<% @stuff.each_with_index do |thing, i| %>
  <% if (i + 1) == @stuff.length %>
    ...
  <% else %>
    ...
  <% end %>
<% end %>

Ответ 5

Более предпочтительной альтернативой может быть использование

@stuff[1..-1].each do |thing|

end
@stuff[-1].do_something_else