Rails中友好的字节格式

时间:2008-12-08 16:05:32

标签: ruby-on-rails ruby

我需要将字节的整数表示格式化为友好的东西,我希望在Ruby或Rails中有一个实用程序函数可以为我做格式化(当然,使我的懒惰永久化。)

我正在寻找一些看起来像的东西:

format_bytes(1024)     -> "1 KB"
format_bytes(1048576)  -> "1 MB"

看起来ActiveSupport中有一些东西要反过来做,但我还没有找到办法在这方面做到这一点。

如果没有一个存在,有没有人有一个特别优雅的解决方案?

3 个答案:

答案 0 :(得分:38)

Number to human size正是您要找的。

require 'action_view'
include ActionView::Helpers::NumberHelper
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, :precision => 2)                     # => 1.18 MB
number_to_human_size(483989, :precision => 0)                      # => 473 KB
number_to_human_size(1234567, :precision => 2, :separator => ',')  # => 1,18 MB

答案 1 :(得分:1)

接受的答案仍然有效,但在较新的轨道中需要actionpack而不是actionview。

require 'actionpack'

答案 2 :(得分: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, :precision => 2)                     # => 1.18 MB
number_to_human_size(483989, :precision => 0)                      # => 473 KB
number_to_human_size(1234567, :precision => 2, :separator => ',')  # => 1,18 MB

并且像魅力一样。