Criando slugs de URL para tags com actions_as_taggable_on
Eu gostaria de criar slugs de URL para tags gerenciadas pela gem atos_as_taggable_on. Por exemplo, em vez de URLs comohttp://myapp.com/tags/5, Eu gostaria de terhttp://myapp.com/tags/my-tag (onde 'minha tag' é o nome exclusivo da tag).
Nos modelos criados por mim, geralmente faço isso substituindo o método to_param do modelo e criando um campo "slug" no modelo para salvar o resultado do novo método to_param. Tentei fazer isso com o modelo Tag do ActsAsTaggableOn, mas não está funcionando.
Caso contrário, posso substituir as coisas na classe tag.rb de ActsAsTaggableOn da seguinte maneira:
# Overwrite tag class
ActsAsTaggableOn::Tag.class_eval do
def name
n = read_attribute(:name).split
n.each {|word| word.capitalize!}.join(" ")
end
end
No entanto, se eu tentar substituir o método to_param no mesmo bloco por uma definição de método como:
def to_param
name.parameterize
end
O Rails ainda gera e responde a rotas com IDs inteiros, em vez do nome parametrizado. De fato, no console, se eu tentar algo como
ActsAsTaggableOn::Tag.find(1).to_param
O ID inteiro é retornado, em vez do resultado do método to_param substituído.
Prefiro não forçar a gema e personalizá-la se houver alguma maneira de fazê-lo com meu próprio código de aplicativo. Obrigado.