Попытка скопировать то, что делает friendly_id, чтобы превратить сильного в слизняка

Мне нужно скопировать способ, которым friendly_id превращает текст в слагов.

Я использовал это для моего приложения

text        = "random text"
text_gsubed = (value.gsub ' ', '-')
slug        = text_gsubed.downcase

Но недавно я понял, что для текста с не алфавитными или числовыми символами он генерирует слаг, отличный от того, что генерирует firendly_id, например

text        = "random >> text"
text_gsubed = (value.gsub ' ', '-')
slug        = text_gsubed.downcase

Слизень код выше генерирует = random->>-text

Пуля feindly_id генерирует = random-text

Я хотя, может быть, у них есть встроенный метод, который вы можете использовать глобально, как text.slug или же text.friendly_id если у вас установлен драгоценный камень, но я не могу его увидеть. Я также заглянул в их файлы, чтобы найти метод, который превращает строку в слаг, но не могу ее найти.

Как я могу подражать тому, что делает friendly_id?

1 ответ

Решение

Я бы, наверное, заглянул в ActiveSupport::Inflections# параметризация.

В вашем случае вы сможете позвонить:

text.parameterize

Если вы хотите объединить и с другими параметрами, возможно, id или что-то, что вы можете сделать:

[id, title, others].join(' ').parameterize
Другие вопросы по тегам