Ruby on Rails标题化连字符名称

kan*_*kyu 12 ruby ruby-on-rails

Rails标题化方法删除连字符,而大写方法不会将连字符后的单词大写.我想要跟随(通过编写方法):

"mary-joe spencer-moore" => "Mary-Joe Spencer-Moore"

"mary-louise o'donnell" => "Mary-Louise O'Donnell"
Run Code Online (Sandbox Code Playgroud)

moh*_*him 20

检查Titelize实现,从中可以获得:

"mary-joe spencer-moore".humanize.gsub(/\b('?[a-z])/) { $1.capitalize }
Run Code Online (Sandbox Code Playgroud)

会给你=>"Mary-Joe Spencer-Moore"

你可以在字符串类中为它编写一个函数,添加到intalizers:

class String
  def my_titleize
    humanize.gsub(/\b('?[a-z])/) { $1.capitalize }
  end
end
Run Code Online (Sandbox Code Playgroud)

然后从你的代码:

"mary-joe spencer-moore".my_titleize
Run Code Online (Sandbox Code Playgroud)

  • `"mary-louise o'donnell".humanize.gsub(/\b([az])/){$ 1.capitalize} =>"Mary-Louise O'Donnell"`如果你还需要这个@kangkyu (6认同)

gab*_*ess 9

您还可以通过拆分字符串并分别标题部分来获得所需的结果:

"mary-louise o'donnell".split('-').map(&:titleize).join('-')
Run Code Online (Sandbox Code Playgroud)