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
so:
page.rhtml : <div id="extras"> <%= render :partial =>'area', :collection => @page.areas %> </div>
_area.rhtml <%=render :partial =>'somelementcode', :collection => area.elements %>