I am finding this a little confusing as well seeing this out of
context but why not pass in the area objects through the
render :collection parameter.
if your Area model has_many :elements, :order => :position
and you pass your collection of elements in the same way everything
should come down the way you ordered it.
I know I left out a little of your logic, but I don't understand the
purpose for it
<%= render :partial =>'area', :collection => @page.areas %>
<%=render :partial =>'somelementcode', :collection => area.elements %>