-3

我目前正在使用以下内容创建标题 slugged 版本。

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

在某些情况下,我收到蛞蝓,我应该把它转换回原来的名字。

是否有任何简单的方法可以在 ruby​​ 中执行上述代码的逆操作(将 slug 名称恢复为其原始名称。)?

4

2 回答 2

4

嗯,不。您正在从字符串中删除信息(例如,删除所有不是字母数字的字母),因此您无法在之后重建它们。

您甚至不能安全地将破折号转换回空格——它们可能是原始字符串中的破折号。(感谢@XavierHolt!)

于 2012-08-22T06:27:38.700 回答
2

您的 slugification 功能:

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

显然是一个不可逆的函数,所以你不能简单地回去。如果你需要回去,你有几个选择:

  1. 将 slug 存储在您的数据库中,以便您可以查询它。
  2. 用您的数据库语言(SQL、JavaScript 等)实现您的 slugification 功能,这样您就可以再次对其进行查询。

在任何一种情况下,当您通过 slug 查询时都会得到重复项,因此您要么首先防止重复(通过修改 slug 以强制唯一性),要么找出某种方法来选择您想要的结果。

于 2012-08-22T07:00:50.443 回答