我目前正在用以下命令創建一個標題slugged版本。strip/gsub恢復紅寶石
title_slug = self.title.downcase.strip.gsub(' ', '-').gsub(/[^\w-]/, '')
在某些情況下,我收到slu and,我應該將其轉換回原來的名稱。
有沒有簡單的方法做的代碼上面紅寶石逆(恢復蛞蝓名改回原來的名字。)?
我目前正在用以下命令創建一個標題slugged版本。strip/gsub恢復紅寶石
title_slug = self.title.downcase.strip.gsub(' ', '-').gsub(/[^\w-]/, '')
在某些情況下,我收到slu and,我應該將其轉換回原來的名稱。
有沒有簡單的方法做的代碼上面紅寶石逆(恢復蛞蝓名改回原來的名字。)?
你slugification功能:
.downcase.strip.gsub(' ', '-').gsub(/[^\w-]/, '')
顯然是一個不可逆函數,所以你不能回去簡單。如果你需要返回,你有幾個選項:
在這兩種情況下,當你用slug查詢時你會得到重複的,所以要麼你首先防止重複(通過修改slug來強制唯一性),要麼找出某種方法來選擇哪個結果你要。
那麼,沒有。你是從字符串中刪除信息(例如刪除所有不是字母數字的字母),所以你不能在之後重構它們。
你甚至不能安全地轉換橫線回空間 - 他們可能已經在原來的字符串破折號。 (感謝@XavierHolt!)
甚至不能安全地將破折號轉換回空格 - 它可能是原始字符串中的破折號。 @Martin:最好存儲原始字符串,並在需要時創建slu since,因爲該方向至少很容易。 –
@XavierHolt:對。謝謝! –
@XavierHolt我正在嘗試做相反的事情(我已經存儲了原始字符串,並且正在接收對slug的請求) – Martin