diff options
author | José Valim <jose.valim@gmail.com> | 2012-01-20 05:59:10 -0800 |
---|---|---|
committer | José Valim <jose.valim@gmail.com> | 2012-01-20 05:59:10 -0800 |
commit | c08ea0ac8e5d47068f95b395ea7704d967efbd3b (patch) | |
tree | 24ca7425e1187a79c87e7e842e5f935ff93ebf37 /actionpack/lib/action_view/helpers/number_helper.rb | |
parent | 3e6e57e7fdcb008aeba2b7f9922fc9ff5b113ab5 (diff) | |
parent | c0a3fe3c0389f3750f22e84ccfed943856e241ce (diff) | |
download | rails-c08ea0ac8e5d47068f95b395ea7704d967efbd3b.tar.gz rails-c08ea0ac8e5d47068f95b395ea7704d967efbd3b.tar.bz2 rails-c08ea0ac8e5d47068f95b395ea7704d967efbd3b.zip |
Merge pull request #4554 from rodrigoflores/master
Added the :format option to number_to_percentage
Diffstat (limited to 'actionpack/lib/action_view/helpers/number_helper.rb')
-rw-r--r-- | actionpack/lib/action_view/helpers/number_helper.rb | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/actionpack/lib/action_view/helpers/number_helper.rb b/actionpack/lib/action_view/helpers/number_helper.rb index 43122ef2ba..56a045fec5 100644 --- a/actionpack/lib/action_view/helpers/number_helper.rb +++ b/actionpack/lib/action_view/helpers/number_helper.rb @@ -169,6 +169,8 @@ module ActionView # * <tt>:delimiter</tt> - Sets the thousands delimiter (defaults to ""). # * <tt>:strip_insignificant_zeros</tt> - If +true+ removes insignificant zeros after the decimal separator # (defaults to +false+). + # * <tt>:format</tt> - Specifies the format of the percentage string + # The number field is <tt>%n</tt> (defaults to "%n%"). # * <tt>:raise</tt> - If true, raises +InvalidNumberError+ when the argument is invalid. # # ==== Examples @@ -180,6 +182,7 @@ module ActionView # number_to_percentage(302.24398923423, :precision => 5) # => 302.24399% # number_to_percentage(1000, :locale => :fr) # => 1 000,000% # number_to_percentage("98a") # => 98a% + # number_to_percentage(100, :format => "%n %") # => 100 % # # number_to_percentage("98a", :raise => true) # => InvalidNumberError def number_to_percentage(number, options = {}) @@ -193,13 +196,17 @@ module ActionView options = options.reverse_merge(defaults) + format = options[:format] || "%n%" + begin - "#{number_with_precision(number, options.merge(:raise => true))}%".html_safe + value = number_with_precision(number, options.merge(:raise => true)) + format.gsub(/%n/, value).html_safe rescue InvalidNumberError => e if options[:raise] raise else - e.number.to_s.html_safe? ? "#{e.number}%".html_safe : "#{e.number}%" + formatted_number = e.number.to_s.html_safe? ? format.gsub(/%n/, e.number).html_safe : format.gsub(/%n/, e.number) + formatted_number.html_safe? ? formatted_number.html_safe : formatted_number end end end |