Я создаю приложение, в котором используется глобализация. Я пытаюсь добавить драгоценный камень Friendly ID для постоянных ссылок.Rails 4 + Friendly_id gem: Как сгенерировать slug с определенной строкой?
My Product
таблица на самом деле нет name
column. Столбец name
хранится в Product::Translation
, поэтому я не могу использовать настройки friendly_id :name, use: :slugged
, которые они рекомендуют на странице github.
Я хочу установить постоянную ссылку на атрибут name
перевода на английский язык. Это то, что я до сих пор:
before_save :update_slug
def update_slug
english_translation = translations.find { |t| t.locale == :en }
self.slug = english_translation.name if english_translation
end
Однако это не преобразует переменную english_translation.name в параметре дружественном формате. Если у меня есть имя something sdfsdfs sdfsf
, слиз будет таким же, и это сломает вещи, так как путь будет /products/something sdfsdfs sdfsf
со всеми пробелами.
Есть ли способ, с помощью которого можно преобразовать строку в формат slug? Что-то вроде:
before_save :update_slug
def update_slug
english_translation = translations.find { |t| t.locale == :en }
self.slug = slugify(english_translation.name)
end
Мне нужен метод, который я могу запустить вручную с параметром для генерации пули.
Почему бы не создать метод делегата под названием 'Product # name', который возвращает название перевода на английский? Или, может быть, создать метод, называемый 'Product # slug_name', который делает это? –
Итак, вы говорите 'friendly_id: my_english_slug_name, используйте:: slugged' и определяете метод под названием' my_english_slug_name', который возвращает имя english_translation? – Edmund
Я пробовал, и это не сработало – Edmund