Лучший способ создания слагов (читабельных идентификаторов) в Rails - PullRequest
61 голосов
/ 19 августа 2009

Вы знаете, как myblog.com/posts/donald-e-knuth.

Должен ли я сделать это с помощью встроенного parameterize метода ?

А как насчет плагина? Я мог бы представить, что плагин хорош для работы с дублирующимися слагами и т. Д. Вот несколько популярных плагинов для Github - кто-нибудь имеет с ними опыт?

  1. http://github.com/rsl/stringex/tree/master
  2. http://github.com/norman/friendly_id/tree/master

По сути, похоже, что слизняки - это полностью решенная проблема, и я не изобретаю велосипед.

Ответы [ 12 ]

0 голосов
/ 16 июня 2012

В Rails 3 я создал инициализатор slug.rb, в который поместил следующий код:

class String
  def to_slug
    ActiveSupport::Inflector.transliterate(self.downcase).gsub(/[^a-zA-Z0-9]+/, '-').gsub(/-{2,}/, '-').gsub(/^-|-$/, '')
  end
end

Затем я использую его в любом месте кода, который определен для любой строки.

Транслитерация превращает такие вещи, как é, á, ô в e, a, o. Поскольку я занимаюсь разработкой сайта на португальском языке, это имеет значение.

0 голосов
/ 16 мая 2012

Я знаю, что у этого вопроса есть время. Однако я вижу некоторые относительно новые ответы.

Сохранение пули в базе данных проблематично, и вы сохраняете избыточную информацию, которая уже существует. Если вы думаете об этом, нет причин спасать слизняка. Слизняк должен быть логикой, а не данными.

Я написал сообщение после этих рассуждений, и надеюсь, что это поможет.

http://blog.ereslibre.es/?p=343

...