2009-02-03 7 views
8

Ich habe einen Fall, wo ich Pluralize verwenden muss, um etwas richtig zu buchstabieren. Ich brauche aber wie so die HTML rendern:Formatiert Pluralisierung

<span>1</span> thing 

oder

<span>3</span> things 

ich eine Hilfsmethode schreiben könnte, aber ich bin nur dafür, dass es nicht etwas in der Box mach das.

+1

Während ich mich in der Vergangenheit über so etwas in der Vergangenheit gequält habe, bin ich zu der Überzeugung gelangt, dass kontextsensitive Pluralisierung über Tötung ist. Sofern Sie nicht buchstäblich Prosa generieren, finde ich "1 Dinge" oder "1 Sache (n)" vollkommen akzeptabel. –

+1

Liebe zum Detail ist wichtig. –

Antwort

4

In der Zwischenzeit habe ich diese Hilfsmethode erstellt, weil es wie es aussieht, ist nicht das, was ich suche:

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

Es ist im Wesentlichen identisch mit der pluralize Methode, mit der Ausnahme dass es die Nummer von vorne entfernt. Dies ermöglicht mir dies zu tun (haml):

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

Dies verwendet die Rails-Klasse TextHelper, die Inflector verwendet, um bei Bedarf die Pluralisierung durchzuführen.

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

Dies funktioniert sicherlich basierend auf dem, was ich gefragt habe, aber ich denke, dass die Hilfsmethode, die ich gepostet habe, dem Designer im Allgemeinen mehr Flexibilität gibt. Vielen Dank! –

+0

Ich muss YAGNI auf diesen Kommentar aufrufen und sagen, um zu refaktorieren, wenn Sie eine andere Verwendung finden. – Lolindrath