Jak sprawdzić pozycje w iteracji "each"

Witam.

Taki przykład. Mam kolekcje newsów, artykułów, czegokolwiek:

<% @subpages.each do |subpage| %>

<%= subpage.name %>

<% #if %>

<%= subpage.body %>

<% #end %>
<% end %>

Chciałbym teraz móc zrobić coś takiego że pierwszy rekord pokazuję całą treść, reszta tylko parametr ‘name’. Po prostu nie wiem jak wyłapać pierwszy (i np. ostatni) rekord w iteracji, ew. jego liczbę w kolejności.

Sprawdzałem: subpage.first? i subpage.first, ale nie ma takich metod. Proszę o pomoc.

brzydko:

[code ruby]@subpages.each_with_index { |subpage,index|
if index==0

end
}[/code]

Nic lepszego narazie do glowy mi nie przychodzi - ale to moze kwestia wysokiej temperatury…

Pozdrawiam
Pawel

Oczywiscie mozesz, ale w tym przypadku @subpages.first? i @subpages.last? a np reszta w ten sposob @subpages.slice(1..@subpages.size-1).each

Na wiele sposobow mozna to zrobic. :slight_smile:

Pozdrawiam

Mam lepsze rozwiazanie (w stosunku do mojego poprzedniego) - bardziej ruby way :slight_smile:


@subpages.each { |subpage|
  if subpage == @subpages.first

  end
}

Hm, dziwne, czemu własnie tak, a nie

subpage.first?

bo subpage jest elementem macierzy @subpages

No tak, tylko to nie rozwiązuje problemu :wink:

Przecież napisano ci co zrobić. Tu masz rozwiązanie w Haml:

[code]- @subpages.each do |subpage|

  • if subpage == @subpages.first
    %h3= subpage.name
    %div= subpage.body
    %hr/[/code]

Nie nie, to wiem, ja się odnosiłem do posta wyżej, autor: Bragi, jego rozwiązanie nie dotyczy problemu, przynajmniej z tego co ja widzę.

No chłopak chciał się pochwalić że zna partiale :wink:

No tak to jest jak się nie doczyta :slight_smile: