> I would like to integrate the title string into a URL.
>
> The standard is like:
> www.bla.xyz/topics/1
>
> In view of a good search engine ranking I would like to write the  
> title
> of a topic into the URL like:
> www.bla.xyz/topics/super-cool-topic
>
> The problem are special characters like ''?()&#'' etc.
in the title
> string.
>
> This is my route thinking:
> map.connect '':controller/:topictitle'', :controller =>
> ''topics'', :action
> => ''show''
>
> Now I need a revokable solution to turn the title into a suiteable  
> form
> without special characters which could make problems.
>
> Here is a function that can do the fitting, but it is not revokable,  
> so
> I can''t do the Find command in the Controller (topic >
Topic.find(:first, :conditions => ["title = ?",
> topic_title]))afterwards.
>
> def topic_to_url(topic_link)
>    topic_link.to_s
>    topic_link = topic_link.gsub(/[ä]/, "ae")
>    topic_link = topic_link.gsub(/[ü]/, "ue")
>    topic_link = topic_link.gsub(/[ö]/, "oe")
>    topic_link = topic_link.gsub(" ", "-")
>    topic_link = topic_link.gsub(/[(,.?!;:''")]/, "")
>    topic_link.downcase
> end
>
> Is there a better way to do the integration?
> Is there a function to convert strings into url suitable forms which  
> can
> undo the hole thing afterwards?
> Should I commit also the ID?
>
> I would love to here how you do that...
Take a look at the to_url method of http://github.com/rsl/stringex/tree/master
It handles all of this for you.
Then, if it were me, put your route back to it''s default of using :id  
and then in your Topic model do:
   def to_param
     "#{id} #{title}".to_url
   rescue
     id
   end
That will have the affect that for the most part you will get nice  
urls like ''/topics/123-super-cool-topic'' but in the worst case
you''ll
still get the id of 123.  So in your controller you can simply do:
Topic.find_by_id(params[:id].to_i) # to_i will strip everything after  
the dash leaving you with just the id.
-philip