有没有在Rails上翻译测量单位的解决方案?

时间:2010-06-09 19:13:01

标签: ruby-on-rails ruby internationalization units-of-measurement localization

我想在Ruby on Rails应用程序中实现测量单元首选项。

例如,用户应该能够在以英里或公里为单位显示距离。而且,显然,不仅要显示,还要输入值。

我认为所有值都应存储在一个全局测量系统中,以简化计算。

有没有针对此的直接解决方案?或者我应该写自己的?

4 个答案:

答案 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上的

Quantity

答案 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

听起来它就像你需要的那样(就单位之间的转换而言),但我不能说我自己也用过它。

编辑:皮埃尔的宝石看起来更健壮,更活跃。