Generowanie czytelnych linków

Witam!
Chciałem dodać w aplikacji możliwość wyświetlania postów podając w linku ich tytuł. Chodzi mianowicie o to, żeby link ten był w czytelnej postaci (bez żadnych %20 i innych krzaków). Napisałem prostą funkcję przekształcającą pliterki i spacje w inne znaki, ale nie mogę sobie poradzić z zapewnieniem unikalności tak uzyskanych linków. Link musi jednoznacznie identyfikować post, tytuł niekoniecznie - najprostsze rozwiązanie to dodawanie do linka jakiejś liczby. Właśnie tutaj pojawia się problem - w jaki sposób uzyskać taką liczbę? Zawsze można sprawdzić, czy wpis jest unikalny, a jeśli nie jest - dodać na koniec klucz główny. Zależało mi jednak na jakimś ładniejszym rozwiązaniu.

Może generuj linki w postaci:

/rok-miesiac-dzien/tytul-jakiegos-posta

Proste i wygodne linki możesz użyskać korzystając z takiej ruty:

map.connect 'articles/show/:id/*title', :controller => :articles, :action => :show, :id => nil
Do tego przyda Ci się pewnie mały helper:

def article_url(article) url_for(:controller => :articles, :action => :show, :id => article, :title => article.title_for_url) end
Przy czym metodę title_for_url musisz już sobie sam napisać (z wykorzystaniem gsub, underscore itp. itd.)

Jest to małe oszustwo, bo taka ruta złapie Ci URL z dowolnym tytułem. Nie przejmowałbym się tym zbytnio.

Zalety to możliwość duplikowania tytułów i szybkie wyszukiwanie artykułów.

Oczywiście pomysł można rozszerzyć o datę postu (np. “/articles/show/:year/:month/:day/:id/*title”) przy czym również darowałbym sobie sprawdzanie poprawnej daty (no chyba że do celów statystycznych ;))

Hmm, dzięki wielkie. Nie do końca wiem jeszcze o czym do mnie rozmawiasz ;-). Spróbuję powalczyć z tym w weekend (nie wgłębiałem się jeszcze w ruty i inne tego typu wynalazki - właściwie to dopiero zaczynam).