I used this in an old Rails 2.x application. Maybe the best approach to clear the name ...
(goes in your model)
def to_param seo_uri end def seo_uri "#{self.id}-#{self.title.gsub(/[^a-z0-9]+/i, '-').gsub(/-{2}/, '-').gsub(/-$/, '')}" end
Hope this helps!
UPDATE
Comments on this answer showed that for Rails 3 users there is a new method: #parameterize . The Rails API document for this method shows how to use it (cut-n-paste):
class Person def to_param "#{id}-#{name.parameterize}" end end @person = Person.find(1) # => #<Person id: 1, name: "Donald E. Knuth"> <%= link_to(@person.name, person_path %> # => <a href="/person/1-donald-e-knuth">Donald E. Knuth</a>
Brian source share