2010-12-27 12 views
10

Estoy buscando una forma de manejar la ordinalización entera en Ruby/Rails, es decir. sufijo "st", "nd", "rd" y "th" para enteros. Ruby on Rails solía extender FixNum con un método de "ordinalize", pero esa funcionalidad parece haber quedado obsoleta en la versión 3.Orinalización de enteros en Ruby/Rails

Actualmente estoy usando la fuente para el antiguo método de Rails, lo cual está bien ... pero esto parece una funcionalidad que la mayoría de los lenguajes de scripting/frameworks web hubieran incorporado, y creo que la gente detrás de Rails debe haber tenido una razón para desaprobar la funcionalidad (¿quizás ahora está disponible en Ruby?).

Por favor, asesóran!

+1

No estoy seguro de si esta funcionalidad ya no se utiliza. ¿Puedes publicar el error que estás viendo junto con el código que lo causa? –

Respuesta

18

El método que desea todavía es ordinalize.

Active_Support se refactorizaron un poco para proporcionar una mejor granularidad. En lugar de cargar todo de una vez, puede seleccionar trozos más pequeños dependiendo de lo que necesite.

Usted puede cargar todo en Active_Support usando require 'active_support/all', o descomponerlo usando require 'active_support/core_ext/integer/inflections':

>> require 'active_support/core_ext/integer/inflections' #=> true 
>> 1.ordinalize #=> "1st" 
+0

¡Gracias! Eso lo explica todo. – Ashoat

+1

Bueno, no * todo *, pero al menos esto. :-) –

+1

Si no desea importar todo en su espacio de nombres, puede simplemente llamar a ActiveSupport :: Inflector (número) – Kevin

0

Últimamente (lo último que supe) ha habido una tendencia a no modificar las clases principales. La lista de correo de Rails-Core podría tener una mejor respuesta para esta.

Parece que esa funcionalidad se movió a Inflector desde una extensión Fixnum que tiene sentido. Con suerte, alguien más puede confirmar esto.