As I understand it, the & means convert a variable to a code block. If the object already is a callable object (proc or lambda) ruby doesn't need to do anything to pass it through. Symbols (:to_s) aren't callable so ruby calls the to_proc method on it. The rails framework addd this for Ruby 1.8. The code is below.
# File activesupport/lib/active_support/core_ext/symbol.rb, line 10
def to_proc
Proc.new { |*args| args.shift.__send__(self, *args) }
end