Re: Each returns just last array

Robert Walker
Wed, 15 Feb 2012 02:15:12 -0000

Felipe Pieretti Umpierre wrote in post #1046832:
> Hello, I was testing a only string, and split it to get a array, I make
> a .each, but when I put to insert, it just insert the last index.

As far as I can tell it''s doing exactly what you asked it to do:

Let me explain....

> emails_controller.rb
>
> emails = params[ :email ][ :email ].split( ";" )
> @e = emails
>
> action
> <%= @e %>
>
> return : ["myemail-S8S1utOw9MsAvxtiuMwx3w@public.gmane.org,My
Name", "myemail-4cajJJ5tN1zQT0dZR+AlfA@public.gmane.org,My Name"]

Your array with two elements...

> emails_controller.rb
>

Enumerate each of the two elements...

> emails.each do |e|
>       for_each_one = e.split( "," )
>
>       @a = for_each_one

1. First time through set @a to a new array containing the split of the
first element
2. Second time through replace @a with new array containing the split of
the second element

>
>       #@email.name = for_each_one[ 0 ]
>       #@email.email = for_each_one[ 1 ]
>       #@email.save
>       #
>       #if @email.valid?
>       #  @group.emails << @email
>       #end
>
>     end
>
> action

Enumerate the two elements contained in @a (i.e. [
''myemail-4cajJJ5tN1zQT0dZR+AlfA@public.gmane.org'',
''My Name'' ])

> <% @a.each do |a| %>
> <%= a %>
> <% end %>
>
> return :
>
> myemail-4cajJJ5tN1zQT0dZR+AlfA@public.gmane.org
> My Name

End of line....