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.
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 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.
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?
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.