8

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

例如,用户应该能够在以英里或公里显示距离之间进行选择。而且,显然,不仅显示,还输入值。

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

有什么解决方案吗?还是我应该自己写?

4

4 回答 4

12

红宝石宝石“ruby-units”可能会有所帮助:

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
于 2010-06-09T19:28:26.130 回答
3

您也许可以看看这个 gem,它可以让您执行一些单位转换。

Github 上的数量

于 2010-06-09T19:24:25.483 回答
2

我构建了 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>
于 2014-02-27T19:25:08.607 回答
0

在 GitHub 上快速搜索发现了这个:http: //github.com/collectiveidea/measurement

听起来它可以满足您的需求(就单位之间的转换而言),但我不能说我自己使用过它。

编辑:皮埃尔的宝石看起来更加坚固和活跃。

于 2010-06-09T19:23:39.450 回答