-3

現在、以下のタイトルのスラッグ版を作成中です。

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

場合によってはスラッグを受け取り、元の名前に戻す必要があります。

ruby で上記のコードの逆 (スラッグ名を元の名前に戻す) を行う簡単な方法はありますか?

4

2 に答える 2

4

うーん、ダメ。文字列から情報を削除しているため(たとえば、英数字ではないすべての文字を削除している)、後でそれらを再構築することはできません。

ダッシュをスペースに安全に戻すことさえできません-それらは元の文字列のダッシュであった可能性があります。(@XavierHoltに感謝します!)

于 2012-08-22T06:27:38.700 に答える
2

あなたのスラグ化機能:

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

は明らかに非可逆関数であるため、単純に戻ることはできません。戻る必要がある場合は、いくつかのオプションがあります。

  1. スラッグをデータベースに保存して、クエリできるようにします。
  2. slugification 関数をデータベース言語 (SQL、JavaScript など) で実装して、クエリを実行できるようにします。

どちらの場合でも、スラッグでクエリを実行すると重複が発生するため、最初に重複を防止するか (一意性を強制するようにスラッグを変更することにより)、必要な結果を選択する方法を見つけます。

于 2012-08-22T07:00:50.443 に答える