我应该如何在Ruby中将帖子标题转换为slug?

标题可以有任何字符,但我只希望slug允许[a-z0-9-_]个字符(是否允许其他字符?).

所以基本上:

  • 把所有的信都写下来
  • 将空格转换为连字符
  • 删除无关字符

推荐答案

slug = title.downcase.strip.gsub(' ', '-').gsub(/[^\w-]/, '')

downcase表示小写.strip确保没有前导或尾随空格.前gsub个字符用连字符替换空格.第二个gsub删除所有非alpha非破折号非下划线字符(请注意,这组字符非常接近\W,但也包括破折号,这就是为什么在这里拼写它).

Ruby相关问答推荐

这是一个很好的测试?规范

使用 Drive API 创建空文件

Jekyll 默认安装没有 _layouts 目录

如何修改 Ruby gem

Rails - RSpec - let和let!之间的区别

如何用 Ruby 覆盖 shell 中的打印行?

Ruby 输出 Unicode 字符

Ruby 1.9 - 无效的多字节字符(US-ASCII)

Ruby 中的 -> (stab) 运算符是什么?

如何从 SystemStackError 中获取回溯:堆栈级别太深?

Ruby 中 Array#reject 的反义词是什么?

从命令行调用 ruby​​ 函数

找不到Bundle 命令 mac

如何在 Ruby 中读取整个文件?

Ruby 中的Monkey Patching到底是什么意思?

如何重命名 gemset?

以小时为单位的时差

Ruby:是否可以在模块中定义类方法?

如何在不为 RVM 用户授予 sudo 访问权限的情况下安装 RVM 系统要求

Ruby 的 %q / %Q 引用方法的用例是什么?