2009-02-03 16 views
8

Mam przypadek, w którym muszę użyć liczby mnogiej, aby poprawnie przeliterować coś. Jednak muszę uczynić html tak:Sformatowana liczba mnoga

<span>1</span> thing 

lub

<span>3</span> things 

mógłbym napisać metodę pomocnika, ale ja po prostu upewniając nie jest coś w polu, aby Zrób to.

+1

Chociaż mam konające na tego typu rzeczy w przeszłości sam, doszedłem do przekonania, że ​​jest wrażliwy na kontekst pluralizacji kill. Dopóki nie tworzysz dosłownie prozy, uważam, że "1 rzeczy" lub "1 rzecz (y)" są do przyjęcia. –

+1

Dbałość o szczegóły ma znaczenie. –

Odpowiedz

4

W międzyczasie stworzyłem tę metodę pomocniczą, ponieważ wygląda na to, że nie jest to, czego szukam:

def pluralize_word(count, singular, plural = nil) 
    ((count == 1 || count == '1') ? singular : (plural || singular.pluralize)) 
end 

To w zasadzie identyczna z metodą pluralize, z wyjątkiem że usuwa numer z przodu. Pozwala mi to zrobić (haml):

%span.label= things.size.to_s 
%description= pluralize_word(things.size, 'thing') 
6

Wykorzystuje to klasę Railsową TextHelper, która używa Inflector, aby wykonać pluralizację w razie potrzeby.

def pluralize_with_html(count, word) 
    "<span>#{count}</span> #{TextHelper.pluralize(count, word)}" 
end 
+0

To z pewnością działa w oparciu o to, o co prosiłem, ale myślę, że napisana przeze mnie metoda pomocnicza daje większą elastyczność projektantowi w ogóle. Dzięki! –

+0

Będę musiał poprosić YAGNI o ten komentarz i powiedzieć refaktorowi, jeśli znajdziesz inne zastosowanie. – Lolindrath