我想在Ruby on Rails应用程序中实现测量单元首选项。
例如,用户应该能够在以英里或公里为单位显示距离。而且,显然,不仅要显示,还要输入值。
我认为所有值都应存储在一个全局测量系统中,以简化计算。
有没有针对此的直接解决方案?或者我应该写自己的?
答案 0 :(得分: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
答案 1 :(得分:3)
你可以看看这个宝石,让你进行一些单位转换。
Github上的答案 2 :(得分: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>
答案 3 :(得分:0)
快速搜索GitHub会显示:http://github.com/collectiveidea/measurement
听起来它就像你需要的那样(就单位之间的转换而言),但我不能说我自己也用过它。
编辑:皮埃尔的宝石看起来更健壮,更活跃。