2010-12-27 10 views
10

Szukam sposobu obsługi ordinalizacji liczby całkowitej w Ruby/Rails, tj. przyrostki "st", "nd", "rd" i "th" do liczb całkowitych. Ruby on Rails używane do rozszerzenia FixNum o metodę "ordinalize", ale ta funkcjonalność wydaje się być przestarzała w wersji 3.Integer ordinalization w Ruby/Rails

Obecnie używam tylko źródła starej metody Rails, która jest w porządku ... ale wydaje się to być funkcjonalnością, którą większość frameworków do języków skryptowych/stron internetowych mogłaby wbudować, i mam wrażenie, że ludzie stojący za Railsami musieli mieć powód do wycofania tej funkcjonalności (być może jest ona teraz dostępna w Ruby?).

Proszę doradzić!

+1

Nie jestem pewien, czy ta funkcja została zaniechana. Czy możesz opublikować błąd, który widzisz, wraz z kodem, który go powoduje? –

Odpowiedz

18

Metoda, którą chcesz, to nadal ordinalize.

Active_Support został nieco refaktoryzowany, aby zapewnić lepszą szczegółowość. Zamiast ładować wszystko od razu, możesz wybrać mniejsze porcje w zależności od potrzeb.

Można albo załadować wszystko Active_Support użyciu require 'active_support/all' lub rozbicie go używając require 'active_support/core_ext/integer/inflections':

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

Dzięki! To wyjaśnia wszystko. – Ashoat

+1

Cóż, nie * wszystko *, ale przynajmniej to. :-) –

+1

Jeśli nie chcesz importować wszystkiego do swojej przestrzeni nazw, możesz po prostu zadzwonić do ActiveSupport :: Inflector (numer) – Kevin

0

Ostatnio (ostatnio wiedziałem) pojawiła się tendencja do nie modyfikowania klas podstawowych. Lista mailingowa Rails-Core może mieć lepszą odpowiedź.

Wygląda na to, że funkcja została przeniesiona do Inflector z rozszerzenia Fixnum, co ma sens. Mam nadzieję, że ktoś inny może to potwierdzić.