2009-02-03 6 views
8

J'ai un cas où j'ai besoin d'utiliser le pluriel pour épeler correctement quelque chose. Cependant, je dois rendre le code HTML comme ceci:Formaté au pluriel

<span>1</span> thing 

ou,

<span>3</span> things 

Je pourrais écrire une méthode d'aide, mais je suis juste en vous assurant qu'il n'y a pas quelque chose dans la boîte à fais ceci.

+1

Bien que j'ai moi-même agonisé sur ce genre de chose dans le passé, je suis venu à croire que la pluralisation contextuelle est terminée. Sauf si vous générez littéralement de la prose, je trouve "1 choses" ou "1 chose (s)" parfaitement acceptables. –

+1

Le souci du détail est important. –

Répondre

4

En attendant, j'ai créé cette méthode d'aide, car il semble qu'il y ait pas ce que je cherche:

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

Il est essentiellement identique à la méthode pluralize, à l'exception qu'il supprime le nombre de l'avant. Cela me permet de le faire (haml):

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

Ceci utilise la classe Rails TextHelper qui utilise Inflector pour effectuer la pluralisation si nécessaire.

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

Cela fonctionne certainement en fonction de ce que j'ai demandé, mais je pense que la méthode d'aide que j'ai posté donne plus de flexibilité au concepteur en général. Merci! –

+0

Je vais devoir invoquer YAGNI sur ce commentaire et dire à refactoriser si vous trouvez un autre usage. – Lolindrath

Questions connexes