2009-02-03 5 views
8

Ho un caso in cui ho bisogno di usare pluralize per scrivere correttamente qualcosa. Tuttavia, ho bisogno di rendere il codice HTML in questo modo:Formatted pluralize

<span>1</span> thing 

o,

<span>3</span> things 

Potrei scrivere un metodo di supporto, ma sto solo facendo attenzione a non ci sia qualcosa nella casella a Fai questo.

+1

Mentre ho agonizzante su questo genere di cose in passato io stesso, io sono venuto a credere che pluralizzazione sensibile al contesto è finita uccidere. A meno che tu non stia letteralmente generando la prosa, trovo che "1 cose" o "1 cosa (s)" sono perfettamente accettabili. –

+1

L'attenzione ai dettagli è importante. –

risposta

4

Nel frattempo, ho creato questo metodo di supporto, perché sembra che non ci sia quello che sto cercando:

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

E 'sostanzialmente identico al metodo pluralize, ad eccezione che rimuove il numero dalla parte anteriore. Questo mi permette di fare questo (Haml):

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

Questo utilizza la classe Rails TextHelper che utilizza Inflector per eseguire la pluralizzazione, se necessario.

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

Questo funziona sicuramente in base a ciò che ho chiesto, ma penso che il metodo di supporto che ho inserito dia più flessibilità al progettista in generale. Grazie! –

+0

Dovrò invocare YAGNI su quel commento e dire al refactoring se trovi un altro uso. – Lolindrath

Problemi correlati