Вы можете посмотреть на code for the Rails titleize method on github, и вы увидите, что регулярное выражение посланы в качестве параметра GSUB является:
/\b(?<!['’`])[a-z]/
Как написано, GSUB принимает каждый согласованный характер в выражении и капитализирует его.
Отличный ресурс для проверки регулярных выражений Ruby - rubular.com. Вы можете вставить в регулярное выражение (не забывайте, что он уже дает вам ведущий и конечный «/»), и попробуйте разные строки, чтобы увидеть, какие совпадения.
Это a quick test, используя указанное выше выражение. Вы увидите, что не только «уличный свет (S)» сломался (получить второй капитал S, но «Feee-Ling» сломан - получает капитал L.
В этом случае ключ к вашей проблеме является раздел в регулярном выражении:
['’`]
... который я бы вывод используется для выявления всевозможных апострофа, чтобы получить притяжательных и стягивания право Если бы вы были поставить (в скобках, ваша проблема будет. Будьте осторожны в рублевом режиме. Наблюдайте за исчезновением подсветки!
Я не мог точно сказать вам, какие последствия обезглавливают метод Rails. Напишите свой собственный!
def titleize_optional_plurals(word)
humanize(underscore(word)).gsub(/\b(?<!['’`(])[a-z]/) { $&.capitalize }
end