Code Anatomy Equivalencies in Ruby

Can anyone translate the anatomy of a do-method to the architecture of a loop for manual iterations?
Example:
How do subArr.each do |ele| and subArr {|ele| puts “exampleoutput”} differ in terms of morphology-based functionality? Is the latter simply an abbreviation of the do-end notation in Ruby, such that specification as a block within the curly brackets translates to stipulated functionalities within the do-end method framework?