2010-06-19 10 views
1

Je crée un site-extrait où les gens peuvent évaluer des extraits, tout comme les votes sur le SO. À l'heure actuelle, quand un extrait a plus de 999 kudos, il semble que sur cette tasse: mug http://picocool.com/images/uploads/img_1705.jpg10K, 20M, 21V kudos etc ... dans Ruby on Rails

donc ce que je veux est de faire un 1K, 1M, etc ... Kudos comme sur SO:

----- 
|999| 
----- 

**user does +1** 
----- 
|1K | 
----- 

**one million kudos** 
----- 
|1M | 
----- 

La même chose vaut pour des milliards, des trillions, des quadrillions, des quintillions, etc ...: 'D

Est-ce que Ruby a des méthodes pour cela, et sinon, comment puis-je les écrire moi-même? Merci.

Répondre

1

Je ne pense pas que Ruby ait quelque chose comme ça. Rails a un ensemble de number helpers, mais n'inclut pas cette fonctionnalité spécifique. Cependant, si vous regardez la source pour "nombre à taille humaine" vous devriez être capable de rouler le vôtre sans trop de problèmes.

+0

Je pense que les rendements quelque chose dans filesizes aussi loin que je me souviens ... – Shyam

0

Une solution possible consiste à créer une application à l'échelle de l'application (application_helper.rb dans app/helpers). Vous pouvez développer cela en utilisant imbriqué si, mais je pense que vous avez l'idée. Je ne dis pas que c'est la façon de le faire, mais ça vaut mieux avoir quelque chose qui fonctionne, que rien du tout.

def kudoify(kudos) 

if kudos > 1000 && kudos < 1000000 then 
mykudos_prefix = (kudos/1000) 
mykudos_suffix = (kudos % 1000) 
mykudos = mykudos_prefix.to_s + "K" + mykudos_suffix.to_s 
end 

return mykudos 
end