7

Je voudrais implémenter des préférences d'unité de mesure dans une application Ruby on Rails.Existe-t-il des solutions pour traduire des unités de mesure sur Rails?

Par exemple, l'utilisateur devrait pouvoir choisir entre afficher les distances en miles ou en kilomètres. Et, évidemment, non seulement afficher, mais aussi entrer des valeurs. Je suppose que toutes les valeurs doivent être stockées dans un système de mesure global pour simplifier les calculs.

Y a-t-il des solutions de remplacement pour cela? Ou devrais-je peut-être écrire le mien?

+0

question connexe: http://stackoverflow.com/questions/1933690/using-rails-actionview-helpers-outside-of-rails –

Répondre

11

Le bijou rubis "rubis-unités" peut aider:

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

Est-ce que le site est en panne? – Bruno

+1

Cette bibliothèque a été déplacée vers github: https://github.com/olbrich/ruby-units –

0

Recherche rapide sur GitHub relevai ceci: http://github.com/collectiveidea/measurement

Sons comme il le fait ce que vous avez besoin (pour autant que la conversion entre unités), mais je ne peux pas dire que je l'ai utilisé moi-même.

Éditer: La pierre de Pierre semble plus robuste et plus active.

3

Vous pouvez peut-être jeter un coup d'œil à cette gemme, qui vous permet d'effectuer quelques conversions d'unités.

Quantity sur Github

1

J'ai construit Unitwise pour résoudre la plupart des problèmes mathématiques de conversion et de mesure de l'unité en Ruby.

utilisation simple ressemble à ceci:

require 'unitwise/ext' 

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

Si vous voulez des mesures de magasin dans vos modèles de Rails, vous pouvez faire quelque chose comme ceci:

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> 
Questions connexes