Я хотел бы создать Заголовки URL-адресов для тегов, управляемых гемом actions_as_taggable_on. Например, вместо URL-адресов типа http://myapp.com/tags/5 я хотел бы иметь http://myapp.com/ tags / my-tag (где «мой тег» - это уникальное имя тега).
В моделях, которые я создаю сам, я обычно делаю это путем переопределения метода to_param модели и создания «slug» в модели, чтобы сохранить результат нового метода to_param. Я попытался сделать это с моделью тегов ActsAsTaggableOn, но она не работает.
В противном случае я могу переопределить вещи в классе tag.rb ActsAsTaggableOn следующим образом:
# Overwrite tag class
ActsAsTaggableOn::Tag.class_eval do
def name
n = read_attribute(:name).split
n.each {|word| word.capitalize!}.join(" ")
end
end
Однако, если я попытаюсь переопределить метод to_param в тот же блок с определением метода вроде:
def to_param
name.parameterize
end
Rails по-прежнему генерирует маршруты и отвечает на них с целыми идентификаторами, а не с параметризованным именем. Фактически, в консоли, если я попробую что-то вроде
ActsAsTaggableOn::Tag.find(1).to_param
Целочисленный идентификатор будет возвращен, а не результат переопределенного метода to_param.
Я бы предпочел не форкнуть гем и не настраивать его, если есть какой-то способ делаю это с моим собственным кодом приложения. Спасибо.