Ruby on Rails Titleize переносное имя

Rails titleize удаляет дефис, а метод capitalize не использует слово после дефиса. Я хотел что-то вроде следующего (написать способ):

"mary-joe spencer-moore" => "Mary-Joe Spencer-Moore"
"mary-louise o'donnell" => "Mary-Louise O'Donnell"

2 ответов


Проверьте реализацию Titelize и из него можно сделать:

"mary-joe spencer-moore".humanize.gsub(/\b('?[a-z])/) { .capitalize }

даст вам = > "Мэри-Джо Спенсер-Мур"

и вы можете написать для него функцию в классе string, добавить в intalizers:

class String
  def my_titleize
    humanize.gsub(/\b('?[a-z])/) { .capitalize }
  end
end

и затем из вашего кода:

"mary-joe spencer-moore".my_titleize

вы также можете получить желаемый результат, разделив строку и заголовок разделов отдельно:

"mary-louise o'donnell".split('-').map(&:titleize).join('-')