Iterator block shortcut

Methods and especially enumerations and their blocks can look way too extensive in simple use cases, for example:

[1, 2, 3 ].map { |number| number.to_s } #=> ["1", "2", "3"]
[1, 2, 3 ].select { |number| number.odd? } #=> [1, 3]

Inside the block there is only one message sent to the iterated Fixnum object, without any parameters. The logic is super simple and for such kind of enumerations Ruby offers a shortcut.
Please compare the examples from above with:

[1, 2, 3 ].map(&:to_s) # => ["1", "2", "3"]
[1, 2, 3 ].select(&:odd?) # => [1, 3]

It is best practice to use the shortcut for all iterators, with the receiver (iterated object) only expecting one message (method call) inside the block and the message expecting any parameters.
It is implemented by passing the message as a symbol and an unary ampersand (&).
Please note that the shortcut is not an enumerator thing only.
Although it can be used for every method expecting a block:

class Product
  attr_reader :name

  def initialize name
    @name = name
  end

  def humanize
    "Product: #{yield(self)}"
  end
end

product = Product.new 'Mango'
product.humanize { |product| product.name } # => "Product: Mango"
# or shorter:
product.humanize(&:name) # => "Product: Mango"

it is more common and definitely more powerful in combination with enumerators.