Lorsque vous définissez, dans une application rails, des url spécifiques avec map.resources, celles-ci finissent de la forme suivante :
/post/1 Ou 1 est l'identifiant de l'uplet dans la base et blog est le nom de la ressource. C'est cool parce que ça permet d'avoir des url assez courtes simplement. Mais d'un point de vue utilisateur, y'a mieux. Avoir une url du genre de /post/titre-du-billet Serait un peu mieux non ? C'est particulièrement simple :)
Map.resources utilise la méthode to_param des modèles. Méthode qui, par défaut, retourne la valeur de l'identifiant. Si vous la modifiez en placant :
def to_param
title
end
Et lorsque vous appellerez la méthode vous permettant d'avoir l'url vers votre billet :
post_url @post
Bien évidemment la valeur de title doit être correctement formatée pour rendre une url (suppression des accents et espaces etc). Rails ne fait pas cela automatiquement. Mais ce genre de méthode ne fait pas partie du sujet de cet article. Cela sera pour un autre :)


Commentaires
il faut également penser à faire en sorte que chaque titre soit unique. par exemple on peut ajouter un incrémente de 1 dès qu'on rencontre le même titre : liens-en-vrac liens-en-vrac-2 liens-en-vrac-3 ...
En n'oubliant pas, afin d'être sur, de mettre une règle d'unicité sur le champ de titre.
J'ai oublié de le préciser dans l'article. Mais il y a l'excellent plugin permalink fu. http://agilewebdevelopment.com/plugins/permalink_fu