试图复制 friendly_id 将强者变成鼻涕虫的做法

Trying to copy what friendly_id does to turn a strong into a slug

我需要复制 friendly_id 将文本更改为 slug 的方式。

我在我的应用程序中使用了这个

text        = "random text"
text_gsubed = (value.gsub ' ', '-')
slug        = text_gsubed.downcase

但最近我意识到,对于非字母或数字字符的文本,它会生成与 firendly_id 生成的不同的 slug,例如

text        = "random >> text"
text_gsubed = (value.gsub ' ', '-')
slug        = text_gsubed.downcase

上面代码生成的 slug = random->>-text

子弹 feindly_id 生成 = random-text

我虽然也许他们有一个内置的方法,你可以像 text.slugtext.friendly_id 那样全局使用,如果你安装了 gem 但我看不到一个。我还查看了他们的文件以找到将字符串变成 slug 但找不到的方法。

如何模仿 friendly_id 正在做的事情?

我可能会研究 ActiveSupport::Inflections#parameterize。

在你的情况下,你应该可以调用:

text.parameterize

如果您还想与其他参数结合使用,也许可以使用 id 或其他您可以做的事情:

[id, title, others].join(' ').parameterize