Mar*_*mas 95
这是Rails吗?
string.parameterize
Run Code Online (Sandbox Code Playgroud)
而已.有关更复杂的段塞,请参阅ActsAsUrl.它可以执行以下操作:
"rock & roll".to_url => "rock-and-roll"
"$12 worth of Ruby power".to_url => "12-dollars-worth-of-ruby-power"
"10% off if you act now".to_url => "10-percent-off-if-you-act-now"
"kick it en Français".to_url => "kick-it-en-francais"
"rock it Español style".to_url => "rock-it-espanol-style"
"tell your readers ??".to_url => "tell-your-readers-ni-hao"
Run Code Online (Sandbox Code Playgroud)
Ben*_*Lee 79
slug = title.downcase.strip.gsub(' ', '-').gsub(/[^\w-]/, '')
Run Code Online (Sandbox Code Playgroud)
downcase
使它小写.在strip
确保没有开头或结尾的空白.第一个gsub
用连字符替换空格.第二个gsub
删除所有非alpha非破折号非下划线字符(请注意,此设置非常接近,\W
但也包括破折号,这就是为什么它在这里拼写).
to_slug是一个很棒的Rails插件,可以处理几乎所有的东西,包括时髦的角色,但它的实现非常简单.将它放到String上,你就会被分类.这是缩小的来源:
String.class_eval do
def to_slug
value = self.mb_chars.normalize(:kd).gsub(/[^\x00-\x7F]/n, '').to_s
value.gsub!(/[']+/, '')
value.gsub!(/\W+/, ' ')
value.strip!
value.downcase!
value.gsub!(' ', '-')
value
end
end
Run Code Online (Sandbox Code Playgroud)