Отформатированное множественное число

У меня есть случай, когда мне нужно использовать множественное число, чтобы правильно написать что-то. Однако мне нужно отобразить html так:

<span>1</span> thing

or,

<span>3</span> things

Я мог бы написать вспомогательный метод, но я просто удостоверяюсь, что в коробке нет ничего для этого.


person Tim Sullivan    schedule 03.02.2009    source источник
comment
Хотя я сам мучился из-за подобных вещей в прошлом, я пришел к выводу, что контекстно-зависимое множественное число — это конец. Если вы не создаете буквально прозу, я считаю 1 вещь или 1 вещь (и) вполне приемлемыми.   -  person Chris Noe    schedule 03.02.2009
comment
Внимание к деталям имеет значение.   -  person Tim Sullivan    schedule 21.06.2013


Ответы (2)


При этом используется класс Rails TextHelper, который использует Inflector, чтобы при необходимости выполнить множественное число.

def pluralize_with_html(count, word)
  "<span>#{count}</span> #{TextHelper.pluralize(count, word)}"
end
person Lolindrath    schedule 03.02.2009
comment
Это, безусловно, работает на основе того, что я просил, но я думаю, что вспомогательный метод, который я опубликовал, дает больше гибкости дизайнеру в целом. Спасибо! - person Tim Sullivan; 03.02.2009
comment
Мне придется вызвать YAGNI для этого комментария и попросить провести рефакторинг, если вы найдете другое применение. - person Lolindrath; 04.02.2009

Тем временем я создал этот вспомогательный метод, потому что похоже, что там нет того, что я ищу:

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

По сути, он идентичен методу множественного числа, за исключением того, что он удаляет число впереди. Это позволяет мне сделать это (haml):

%span.label= things.size.to_s
%description= pluralize_word(things.size, 'thing')
person Tim Sullivan    schedule 03.02.2009