Есть ли какие-либо решения для перевода единиц измерения на Rails? - PullRequest
7 голосов
/ 09 июня 2010

Я бы хотел реализовать настройки единиц измерения в приложении Ruby on Rails.

Например, пользователь должен иметь возможность выбирать между отображением расстояний в милях или километрах.И, разумеется, не только отображение, но и ввод значений.

Я полагаю, что все значения должны храниться в одной глобальной системе измерений, чтобы упростить вычисления.

Существуют ли выпадающие решения дляэтот?Или я должен написать свой собственный?

Ответы [ 4 ]

11 голосов
/ 09 июня 2010

Может помочь рубиновый камень "ruby-unit":

http://ruby -units.rubyforge.org / рубин-единиц /

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
3 голосов
/ 09 июня 2010

Вы можете взглянуть на этот драгоценный камень, который позволит вам выполнить некоторые преобразования единиц.

Количество на Github

1 голос
/ 27 февраля 2014

Я построил 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>
0 голосов
/ 09 июня 2010

Быстрый поиск на GitHub обнаружил это: http://github.com/collectiveidea/measurement

Звучит так, будто это делает то, что вам нужно (в том, что касается конвертации единиц), но я не могу сказать, что использовал это сам.

Редактировать: камень Пьера выглядит более крепким и активным.

...