Подтвердить что ты не робот

Rails article helper - "a" или "an"

Кто-нибудь знает о помощнике Rails, который может автоматически добавить соответствующую статью к данной строке? Например, если я перейду в "яблоко" к функции, получится "яблоко", тогда как если бы я отправил "банан", он вернул бы "банан"

Я уже проверил Rails модуль TextHelper, но ничего не нашел. Извините, если это дубликат, но, по общему признанию, это трудный ответ на поиск...

4b9b3361

Ответ 1

Нет, что я знаю, но кажется достаточно простым, чтобы написать помощника для этого права? Сверху моей головы

def indefinite_articlerize(params_word)
    %w(a e i o u).include?(params_word[0].downcase) ? "an #{params_word}" : "a #{params_word}"
end

надеюсь, что поможет

edit 1: Также найден этот поток с патчем, который может помочь вам пуленепробивать это более https://rails.lighthouseapp.com/projects/8994/tickets/2566-add-aan-inflector-indefinitize

Ответ 2

Теперь для этого есть драгоценный камень: indefinite_article.

Ответ 3

Кажется, что проверка того, что первая буква является гласным, доставит вам большую часть пути, но есть крайние случаи:

  • Некоторые люди скажут "исторический момент", но напишут "исторический момент".
  • Но это "история"!
  • Сокращения и сокращения являются проблематичными ( "Репортер NBC", но "авторитет НАТО" ).
  • Слова, начинающиеся с гласного, но произносимые с помощью начального согласного ( "союз" )
  • Другие?

(источник)

Ответ 4

Я знаю, что следующий ответ слишком сильно подходит для практической простой реализации, но в случае, если кто-то хочет сделать это с точностью в некоторых масштабах реализации.

Правило на самом деле довольно просто, но проблема в том, что правило зависит от произношения, а не от написания:

Если начальный звук является гласным звуком (не обязательно гласным буквой), тогда добавьте 'an', иначе добавьте 'a'.

Ссылаясь на примеры Джона:

"час", потому что "h" здесь является гласным звуком, тогда как "историческим", потому что "h" здесь является согласным звуком. "NBC", потому что "N" здесь читается как "en", тогда как "НАТО", потому что "N" здесь читается как "n".

Итак, вопрос сводится к выяснению: "когда некоторые буквы произносятся как гласные звуки". Для этого вам нужно как-то получить доступ к словарю, который имеет фонологические представления для каждого слова, и проверить его исходную фонему.

Ответ 5

Посмотрите http://deveiate.org/projects/Linguistics/wiki/English - он обеспечивает обработку неопределенных статей и многое другое. Я успешно использовал его во многих проектах.

Ответ 6

Мне нравится gem, если вы хотите комплексное решение. Но если вы просто хотите, чтобы тесты стали более приятными, полезно, чтобы патч-плейер monkey соответствовал стандартным Rails inflector pattern:

class String
  def articleize
    %w(a e i o u).include?(self[0].downcase) ? "an #{self}" : "a #{self}"
  end
end