В 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. Поскольку я занимаюсь разработкой сайта на португальском языке, это имеет значение.