7

我想在Ruby on Rails應用程序中實現度量單位首選項。在Rails上有翻譯度量單位的解決方案嗎?

例如,用戶應該能夠選擇顯示以英里或以公里爲單位的距離。顯然,不僅是展示,而且也是輸入價值。

我想所有的值都應該存儲在一個全局測量系統中以簡化計算。

有沒有這方面的插入式解決方案?或者我應該寫我自己的?

+0

相關問題:http://stackoverflow.com/questions/1933690 /使用rails-actionview-helpers-rails- – 2010-06-09 23:05:57

回答

11

紅寶石寶石 「紅寶石單位」 可能會有所幫助:

http://ruby-units.rubyforge.org/ruby-units/

require 'rubygems' 
require 'ruby-units' 

'8.4 mi'.to('km')  # => 13.3576 km 
'8 lb 8 oz'.to('kg') # => 3.85554 kg 

a = '3 in'.to_unit 
b = Unit('5 cm') 
a + b     # => 4.968 in 
(a + b).to('cm')  # => 16.62 cm 
+0

網站是否被關閉? – Bruno 2013-11-06 19:22:07

+1

此庫已移至github:https://github.com/olbrich/ruby-units – 2014-02-27 19:25:55

0

在GitHub上快速搜索變成了這樣:http://github.com/collectiveidea/measurement

聽起來像它你需要什麼(只要單位之間的轉換),但我不能說我已經用它自己。

編輯:皮埃爾的寶石看起來像更強大和活躍。

3

你也許可以看看這個寶石,它讓你執行一些單位轉換。

Quantity在Github上

1

我建Unitwise解決Ruby的大多數單位轉換和測量的數學問題。

簡單的用法是這樣的:

require 'unitwise/ext' 

26.2.mile.convert_to('km') 
# => #<Unitwise::Measurement 42.164897129794255 kilometer> 

如果你想在你的Rails的模型店的測量,你可以做這樣的事情:

class Race < ActiveRecord::Base 
    # Convert value to kilometer and store the number 
    def distance=(value) 
    super(value.convert_to("kilometer").to_f) 
    end 

    # Convert the database value to kilometer measurement when retrieved 
    def distance 
    super.convert_to('kilometer') 
    end 
end 

# Then you could do 
five_k = Race.new(distance: 5) 
five_k.distance 
# => #<Unitwise::Measurement 5 kilometer> 

marathon = Race.new(distance: 26.2.mile) 
marathon.distance.convert_to('foot') 
# => #<Unitwise::Measurement 138336.27667255333 foot> 
相關問題