Each e For

6 views
Skip to first unread message

Eder-Webdevelop

unread,
Nov 25, 2009, 1:18:11 PM11/25/09
to rails-br
Tenho o seguinte codigo


1.<% @contents.each do |content| %>
2.<%=h content.id %>
3. <% end %>



Agora a minha dúvida seria a seguinte como eu faço para descobrir
nesse loop qual o primeiro e ultimo resultado do loop… alguem pode me
dar uma luz
ja tentei

@contents.first
@contents.last
mais depois o loop acaba mostrando o primeiro e o ultimo resultado
novamente

Maurício Linhares

unread,
Nov 25, 2009, 1:20:28 PM11/25/09
to rail...@googlegroups.com
<% @contents.each do |content| %>
<% if content == @contents.first %>
Primeiro
<% end %>
<% if content == @contents.last %>
Último
<% end %>
<%=h content.id %>
<% end %>

-
Maurício Linhares
http://codeshooter.wordpress.com/ | http://twitter.com/mauriciojr



2009/11/25 Eder-Webdevelop <eder....@gmail.com>:

Bruno Azisaka Maciel

unread,
Nov 25, 2009, 1:26:18 PM11/25/09
to rail...@googlegroups.com
As vezes, uma forma limpa seria criar as variaveis no controller assim:

@first_content = @contents.shift
@last_content = @contents.pop

Dessa forma você pode tratar o each de forma limpa (e mantendo o
código que já existe) e separadamente trabalhar com o primeiro e
ultimo content.
abraço,
Bruno Azisaka Maciel

Neves

unread,
Nov 25, 2009, 1:47:07 PM11/25/09
to rails-br
Só para aproveitar o assunto, como seria se não tivesse os métodos
first nem last?

Bruno Azisaka Maciel

unread,
Nov 25, 2009, 1:48:47 PM11/25/09
to rail...@googlegroups.com
Poderia usar o each_with_index
abraço,
Bruno Azisaka Maciel

Neves

unread,
Nov 25, 2009, 1:56:20 PM11/25/09
to rails-br
Desculpe, o que quis dizer é, sem sub-entender que se trata de um
array.
Seja um objeto que responda apenas para o método each.

Daniel Shimoyama

unread,
Nov 25, 2009, 2:36:22 PM11/25/09
to rail...@googlegroups.com
Sei lá, mas senão existissem esse metodos, acho que uma forma interessante seria colocando contadores, não vejo outra forma de descobrir isso.

do tipo:

cont = 0
if cont > objeto.size-1
//variavel
else
cont = cont +1
end

Nem sei se tá certo, fiz correndo, mas na pressa(cliente na cola) eu faria dessa forma.

Num sei se outros tem opiniões diferentes.

2009/11/25 Neves <marcos...@gmail.com>

Maurício Linhares

unread,
Nov 25, 2009, 2:36:17 PM11/25/09
to rail...@googlegroups.com
Se o objeto não tem each_with_index nem first nem last é difícil de
adivinhar como fazer isso né :)
2009/11/25 Neves <marcos...@gmail.com>:

Neves

unread,
Nov 25, 2009, 2:43:54 PM11/25/09
to rails-br
Fica o desafio então pra galera :)
Uma dica, você sempre sabe quando o loop começou e quando terminou.
QUALQUER LOOP!

On Nov 25, 5:36 pm, Maurício Linhares <linhares.mauri...@gmail.com>
wrote:
> Se o objeto não tem each_with_index nem first nem last é difícil de
> adivinhar como fazer isso né :)
>
> -
> Maurício Linhareshttp://codeshooter.wordpress.com/|http://twitter.com/mauriciojr
>
> 2009/11/25 Neves <marcos.ne...@gmail.com>:

Igor Leroy

unread,
Nov 25, 2009, 2:47:10 PM11/25/09
to rail...@googlegroups.com
Pra tudo nessa vida tem uma marreta xD

2009/11/25 Neves <marcos...@gmail.com>



--
-- Igor Leroy
-- Desenvolvedor Web
-- www.igorleroy.com

Eder-Webdevelop

unread,
Nov 25, 2009, 2:48:32 PM11/25/09
to rails-br
Opá Galera entao usando o seguinte codigo:

<% @contents.each do |content| %>
<% if content == @contents.first %>
Primeiro
<% end %>
<%=h content.id %>

<% if content == @contents.last %>
Último
<% end %>

<% end %>

O resultado acaba se repitindo o primeiro eo ulitmo como mencionei no
inicio do tópico ...

Maurício Linhares

unread,
Nov 25, 2009, 2:49:36 PM11/25/09
to rail...@googlegroups.com
O que é que acaba se repetindo?

2009/11/25 Eder-Webdevelop <eder....@gmail.com>:

Marcos Tapajos

unread,
Nov 25, 2009, 3:02:17 PM11/25/09
to rail...@googlegroups.com
@contents.first

<% @contents[1..-2].each do |content| %>
<%=h content.id %>
<% end %>

@contents.last


Marcos Tapajós 
http://tapajos.me
tap...@gmail.com
mar...@tapajos.me
Mobile: +55 21 8709-8693
Skype: marcostapajos
Gtalk/MSN: tap...@gmail.com
Twitter: tapajos

Eder-Webdevelop

unread,
Nov 25, 2009, 5:33:17 PM11/25/09
to rails-br
Entao indo pelo caminho de voces cheguei nesse resultado que resolveu
meu problema


<% @contents.each do |content| %>
<% if content == @contents.first %>
<%=h content.id %>
<% end %>
<% end %>

<% @contents[1..-2].each do |content| %>
<%=h content.id %>
<% end %>

<% @contents.each do |content| %>
<% if content == @contents.last %>
<%=h content.id %>
<% end %>

<% end %>

Agora minha Duvida é será que não ficou sujo ..


On 25 nov, 18:02, Marcos Tapajos <tapa...@gmail.com> wrote:
> @contents.first
>
> <% @contents[1..-2].each do |content| %>
> <%=h content.id %>
> <% end %>
>
> @contents.last
>
> Marcos Tapajós http://tapajos.me
> tapa...@gmail.com
> mar...@tapajos.me
> Mobile: +55 21 8709-8693
> Skype: marcostapajos
> Gtalk/MSN: tapa...@gmail.com

Marcos Tapajos

unread,
Nov 25, 2009, 6:42:12 PM11/25/09
to rail...@googlegroups.com
Pq um each para pegar o primeiro elemento?

[]'s

Marcos Tapajós 
http://tapajos.me
tap...@gmail.com
mar...@tapajos.me
Mobile: +55 21 8709-8693
Skype: marcostapajos
Gtalk/MSN: tap...@gmail.com

Marcio Trindade

unread,
Nov 25, 2009, 10:16:57 PM11/25/09
to rail...@googlegroups.com
Seguem 2 opções.

Primeira opção
<% @contents[1..-2].each do |content| %>
  <%=h content.id %>
<% end %>

Segunda opção
<% @contents.each_with_index do |content, index| %>
  <% if(index == 0) %>
    first <%=h content.id %>
  <% elsif((index+1) == @contents.size) %>
    last <%=h content.id %>
  <% else %>
    <%=h content.id %>
  <% end -%>
<% end %>

Marcio Trindade
http://marciotrindade.com


2009/11/25 Marcos Tapajos <tap...@gmail.com>

Bruno Mamona

unread,
Nov 26, 2009, 8:31:23 AM11/26/09
to rails-br
Pratica logica que fica de boa, eu acho que as primeiras opçoes lá em
cima estão melhores e mais ao estilo rails. Isso de end em cada
iteracao parece coisa de php sux

On 26 nov, 00:16, Marcio Trindade <marciotrind...@gmail.com> wrote:
> Seguem 2 opções.
>
> Primeira opção
> <%= h @contents.first.id %>
> <% @contents[1..-2].each do |content| %>
>   <%=h content.id %>
> <% end %>
> <%=h @contents.last.id %>
>
> Segunda opção
> <% @contents.each_with_index do |content, index| %>
>   <% if(index == 0) %>
>     first <%=h content.id %>
>   <% elsif((index+1) == @contents.size) %>
>     last <%=h content.id %>
>   <% else %>
>     <%=h content.id %>
>   <% end -%>
> <% end %>
>
> Marcio Trindadehttp://marciotrindade.com
>
> 2009/11/25 Marcos Tapajos <tapa...@gmail.com>
>
>
>
> > Pq um each para pegar o primeiro elemento?
>
> > []'s
>
> > Marcos Tapajós 
> >http://tapajos.me
Reply all
Reply to author
Forward
0 new messages