module ActionView::Helpers::NumberHelper
def number_with_delimiter(number, options = {})
# => 98 765 432,98
number_with_delimiter(98765432.98, :delimiter => " ", :separator => ",")
number_with_delimiter("112a") # => 112a
number_with_delimiter(12345678.05, :locale => :fr) # => 12 345 678,05
number_with_delimiter(12345678.05, :separator => " ") # => 12,345,678 05
number_with_delimiter(12345678, :delimiter => ",") # => 12,345,678
number_with_delimiter(12345678, :delimiter => ".") # => 12.345.678
number_with_delimiter(12345678.05) # => 12,345,678.05
number_with_delimiter("123456") # => 123,456
number_with_delimiter(12345678) # => 12,345,678
==== Examples
the argument is invalid.
* :raise - If true, raises +InvalidNumberError+ when
fractional and integer digits (defaults to ".").
* :separator - Sets the separator between the
to ",").
* :delimiter - Sets the thousands delimiter (defaults
(defaults to current locale).
* :locale - Sets the locale to be used for formatting
==== Options
hash.
(e.g., 12,324). You can customize the format in the +options+
Formats a +number+ with grouped thousands using +delimiter+
def number_with_delimiter(number, options = {}) options.symbolize_keys! options[:delimiter] = ERB::Util.html_escape(options[:delimiter]) if options[:delimiter] options[:separator] = ERB::Util.html_escape(options[:separator]) if options[:separator] begin Float(number) rescue ArgumentError, TypeError if options[:raise] raise InvalidNumberError, number else return number end end defaults = I18n.translate(:'number.format', :locale => options[:locale], :default => {}) options = options.reverse_merge(defaults) parts = number.to_s.to_str.split('.') parts[0].gsub!(/(\d)(?=(\d\d\d)+(?!\d))/, "\\1#{options[:delimiter]}") parts.join(options[:separator]).html_safe end