>    At this point I would like to advance the next index in a.each but
> remain in b.each, another word, b[4] will not become b[5] after the
> a[had advance], how can I do ?

I can't really understand your example (including the one in your
latter posting about cows and pigs). But I got what you mean, I think.

How about this then:

a=[1,2,3,4,5]
b=[5,4,3,2,1]
next_i = false
a.each do |i|
  puts "i=#{i}"
  if next_i
    next_i = false
    next 
  end
  b.each do |j|
    if i==j
      puts "Advance i to #{i+1}, keep j at #{j}"
      i += 1
      next_i = true
      redo
    end
    puts "i=#{i}\tj=#{j}"
  end
end

The output for the above follows after my signature. 

In all honesty, the above is ugly and confusing. How about using
nested while? That will allow a much finer control, shorter code, and
makes a clearer point because, at least for me, if I see a nested
each, I do not expect for the inner each to control the outer
each.

YS.

i=1
i=1	j=5
i=1	j=4
i=1	j=3
i=1	j=2
Advance i to 2, keep j at 1
i=2	j=1
i=2
i=3
i=3	j=5
i=3	j=4
Advance i to 4, keep j at 3
i=4	j=3
i=4	j=2
i=4	j=1
i=4
i=5
Advance i to 6, keep j at 5
i=6	j=5
i=6	j=4
i=6	j=3
i=6	j=2
i=6	j=1