2008-12-08 16 views
14

मुझे कुछ अनुकूल में बाइट्स का एक पूर्णांक प्रतिनिधित्व प्रारूपित करने की आवश्यकता है, और मुझे उम्मीद है कि रुबी या रेल में एक उपयोगिता कार्य है जो मेरे लिए स्वरूपण करेगा (मेरी आलस्य को कायम रखने के लिए पाठ्यक्रम)रेल में दोस्ताना बाइट स्वरूपण

मैं कुछ है कि ऐसा दिखाई देगा देख रहा हूँ:।

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

ऐसा लगता है कि ActiveSupport में कुछ सामान यह दूसरी तरह के आसपास करने के लिए है, लेकिन मैं इसके लिए कोई तरीका नहीं मिला है की तरह यह इस दिशा में।

यदि कोई मौजूद नहीं है, तो क्या किसी के पास विशेष रूप से सुरुचिपूर्ण समाधान है?

उत्तर

37

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 
+2

धन्यवाद! मैं इस सटीक समाधान की तलाश में था। – CalebHC

+0

अधिकतम मूल्य संख्या_to_human_size (99 99 99 99 99 99 999) # => "90 9 टीबी" है – adcosta

1

स्वीकृत जवाब अभी भी काम करते हैं, लेकिन इसके बजाय के नए रेल में actionpack actionview की आवश्यकता है।

require 'actionpack' 
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 

और एक आकर्षण की तरह काम करता है।

संबंधित मुद्दे