> 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
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to