public Method

NumberHelper.number_to_phone(number, options = {})

Contents:

Formats a number into a US phone number (e.g., (555) 123-9876). You can customize the format in the options hash.

Options

  • :area_code - Adds parentheses around the area code.
  • :delimiter - Specifies the delimiter to use (defaults to "-").
  • :extension - Specifies an extension to add to the end of the generated number.
  • :country_code - Sets the country code for the phone number.

Examples

number_to_phone(1235551234)                                        # => 123-555-1234
number_to_phone(1235551234, :area_code => true)                    # => (123) 555-1234
number_to_phone(1235551234, :delimiter => " ")                     # => 123 555 1234
number_to_phone(1235551234, :area_code => true, :extension => 555) # => (123) 555-1234 x 555
number_to_phone(1235551234, :country_code => 1)                    # => +1-123-555-1234

number_to_phone(1235551234, :country_code => 1, :extension => 1343, :delimiter => ".")
=> +1.123.555.1234 x 1343

Source Code

# File action_view/helpers/number_helper.rb, line 26
def number_to_phone(number, options = {})
  number       = number.to_s.strip unless number.nil?
  options      = options.stringify_keys
  area_code    = options["area_code"] || nil
  delimiter    = options["delimiter"] || "-"
  extension    = options["extension"].to_s.strip || nil
  country_code = options["country_code"] || nil

  begin
    str = ""
    str << "+#{country_code}#{delimiter}" unless country_code.blank?
    str << if area_code
      number.gsub!(/([0-9]{1,3})([0-9]{3})([0-9]{4}$)/,"(\\1) \\2#{delimiter}\\3")
    else
      number.gsub!(/([0-9]{1,3})([0-9]{3})([0-9]{4})$/,"\\1#{delimiter}\\2#{delimiter}\\3")
    end
    str << " x #{extension}" unless extension.blank?
    str
  rescue
    number
  end
end
Comments

Have your say
Please use Textile formatting (click here for a cheat sheet). Use <code/> and <pre/> for code samples.
Click here to login with OpenID to to post comments.