Routing issues with special characters

I am using acts_as_taggable according to the examples in the Rails Recipes book. Everything works fine except for cases where I want to use a tag with a dot (like .NET) or a slash (like COM/OLE).

The problem is not really with acts_as_taggable, but rather with routing.

I am using the suggested technique where I use urls like /kb/list/ mytag to display all the entries tagged "mytag."

Here is the console output showing what happens when I use urls with dots or slashes:

This works as expected:

rs.recognize_path "/kb/list/mytag"

=> {:id=>"mytag", :action=>"list", :controller=>"kb"}

But check these out:

rs.recognize_path "/kb/list/.NET"

=> {:anything=>["kb", "list", ".NET"], :controller=>"kb", :action=>"index"}

rs.recognize_path "/kb/list/COM%2FOLE"

=> {:anything=>["kb", "list", "COM", "OLE"], :controller=>"kb", :action=>"index" }

Note that I replaced "/" with "%2F" because that's what happens in the browser when it urlencodes the string "COM/OLE."

I suppose I could re-write the "list" action to use numeric ids instead of tag names, but I would hate to lose that functionality.

Does anybody know how to get routing to work under these circumstances?

Thanks for the tip! I'll give that a try.

I'm a little stuck. Maybe you can help.

I am adding:

has_permalink :name

to the class definition for Tag.

When I do this I get an error:

C:/InstantRails/ruby/lib/ruby/gems/1.8/gems/activerecord-1 .15.3/lib/active_record/base.rb:1235:in `method_missing':NoMethodError: undefine d method `has_permalink' for Tag:Class

I assume this means that the acts_as_taggable plugin is trying to load its models before permalink_fu has been loaded.

I have tried adding:

require 'permalink_fu' to tag.rb, but that returns file not found errors. I have tried a few different ways of specifying the path to the permalink_fu plugin but none work.

Is there another way to accomplish this?