我目前正在使用以下内容创建标题 slugged 版本。
title_slug = self.title.downcase.strip.gsub(' ', '-').gsub(/[^\w-]/, '')
在某些情况下,我收到蛞蝓,我应该把它转换回原来的名字。
是否有任何简单的方法可以在 ruby 中执行上述代码的逆操作(将 slug 名称恢复为其原始名称。)?
嗯,不。您正在从字符串中删除信息(例如,删除所有不是字母数字的字母),因此您无法在之后重建它们。
您甚至不能安全地将破折号转换回空格——它们可能是原始字符串中的破折号。(感谢@XavierHolt!)
您的 slugification 功能:
.downcase.strip.gsub(' ', '-').gsub(/[^\w-]/, '')
显然是一个不可逆的函数,所以你不能简单地回去。如果你需要回去,你有几个选择:
在任何一种情况下,当您通过 slug 查询时都会得到重复项,因此您要么首先防止重复(通过修改 slug 以强制唯一性),要么找出某种方法来选择您想要的结果。