2008年8月7日木曜日

[Ruby on Rails] 数字を整形する便利なViewヘルパー

意外と知られていない(?)便利なヘルパーです。
うっかり車輪の再発明をしそうになったのでメモ。

Module ActionView::Helpers::NumberHelper
(http://api.rubyonrails.org)

number_to_currency(number, options = {})
通貨のフォーマットに変換。($13.65)

オプション
:precision - 小数点以下何桁まで表示するか (デフォルト 2)
:unit - 通貨の単位 (デフォルトは"$")。ちなみに円マーク(¥)を半角にすると色々面倒なので全角にするが吉。
:separator - ユニットのセパレーター (デフォルト ".")
:delimiter - 桁が3つ繰り上がるごとの区切り文字(デフォルト ",")
:format - 出力される文字のフォーマット (デフォルト "%u%n") %uは通貨の単位 %nは数字部分


number_to_currency(1234567890.50)                    # => $1,234,567,890.50
number_to_currency(1234567890.506) # => $1,234,567,890.51
number_to_currency(1234567890.506, :precision => 3) # => $1,234,567,890.506
number_to_currency(1234567890.50, :unit => "£", :separator => ",", :delimiter => "")
# => £1234567890,50
number_to_currency(1234567890.50, :unit => "£", :separator => ",", :delimiter => "", :format => "%n %u")
# => 1234567890,50 £


number_to_human_size(size, precision=1)
バイトサイズを人間に理解しやすい形式にフォーマットを変換します。(例えば、1500 -> 1.5KB)
ファイルのサイズをユーザーに知らせる時などに便利なメソッドです。数字に変換できない場合はnilを返します。precisionパラメーターで小数点以下何桁まで表示するか指定できます(デフォルトは1)。


number_to_human_size(123)           # => 123 Bytes
number_to_human_size(1234) # => 1.2 KB
number_to_human_size(12345) # => 12.1 KB
number_to_human_size(1234567) # => 1.2 MB
number_to_human_size(1234567890) # => 1.1 GB
number_to_human_size(1234567890123) # => 1.1 TB
number_to_human_size(1234567, 2) # => 1.18 MB
number_to_human_size(483989, 0) # => 4 MB


number_to_percentage(number, options = {})
数字をパーセンテージのフォーマットに変換します(例 65%)。

オプション
:precision -小数点以下何桁まで表示するか (デフォルト 3)
:separator - ユニットのセパレーター (デフォルト ".")


number_to_percentage(100)                         # => 100.000%
number_to_percentage(100, :precision => 0) # => 100%
number_to_percentage(302.24398923423, :precision => 5)
# => 302.24399%


number_to_phone(number, options = {})
アメリカの電話番号のフォーマットに変換します。
詳細は割愛。

number_with_delimiter(number, delimiter=",", separator=".")
3桁ごとに区切り文字を挿入します(例 12,324)

オプション
delimiter - 区切り文字(デフォルト ",").
separator - ユニットのセパレーター (defaults to ".").


number_with_delimiter(12345678)       # => 12,345,678
number_with_delimiter(12345678.05) # => 12,345,678.05
number_with_delimiter(12345678, ".") # => 12.345.678
number_with_delimiter(98765432.98, " ", ",")
# => 98 765 432,98


number_with_precision(number, precision=3)
小数点以下何桁まで表示するか。


number_with_precision(111.2345)     # => 111.235
number_with_precision(111.2345, 2) # => 111.23
number_with_precision(13, 5) # => 13.00000
number_with_precision(389.32314, 0) # => 389

0 件のコメント: