2009-06-26 3 views
1

Matin Tout le monde! ..Rails Routage Question: Mappage de limaces/Permaliens directement sous la racine?

Général Routing Quesiton Ici ... Je travaille actuellement pour obtenir un itinéraire similaire pour les utilisateurs de mon application.

http://www.example.com/nom d'utilisateur

Mappe puis au usersControllers # show, je l'ai donc ce qui suit dans mon dossier de routes.

map.connect '/: permalien',: contrôleurs => "utilisateurs",: action => "show"

J'ai alors eu l'action show pour trouver l'utilisateur par le permalien dans le param. Donc, cela fonctionne mais ...

Le problème que je rencontre est que toutes les autres routes UNDEFINED sont envoyées à userController # show. c'est-à-dire & d'autres 404 routes non nommées. Donc, je ne pense pas que je vais avec la bonne convention pour cela. Ma solution est d'ajouter juste d'autres routes nommées ci-dessus, ce qui résout le problème, mais pour moi semble fragile. Est-ce que je pense à ce problème?

Quelle est la meilleure solution? Je vais chercher à google google pour les réponses, mais je pensais juste que je jetais ça pour la discussion. Des idées?

Répondre

1

Vous le faites correctement. Les routes Rails vont de haute priorité en haut à basse priorité en bas. Vos utilisateurs montrent que l'action devrait aller en bas. Assurez-vous simplement que si le permalink ne correspond pas à un utilisateur, un 404 approprié est généré.

+0

Merci Ben, j'apprécie le heads-up. Je pense que j'ai travaillé ça. J'ai défini l'espace de noms "permalink" et toutes les autres URLs que j'ai listées ci-dessus comme prioritaires. Test maintenant ... –

1

Et si vous obtenez un utilisateur dont le nom d'utilisateur est le même que les autres URL de votre site? Cela semble être un problème à attendre.

changer juste à http://www.example.com/user/username

De cette façon, vous créez un espace de noms « utilisateur » pour toutes les URL en fonction du nom d'utilisateur.

+0

Zepplock, Ouais je considérais ça. Mais j'aime vraiment le look des urls ayant leurs propres profils directement après l'espace de noms "root". Je vais construire dans la validation pour empêcher les utilisateurs de créer des noms qui correspondent aux URLs existantes, ou encore avoir ces urls plus "statiques" dans leur propre espace de noms à la place .. i.e www.example.com/pages/ .... Merci pour le conseil si! –

+0

/user/nom d'utilisateur est lourd. Il suffit d'ajouter ou de restreindre les noms d'utilisateur d'être les mêmes que les autres chemins de contrôleur. Dans le pire des cas, parce que le chemin de l'utilisateur serait une route de faible priorité, ce serait qu'un utilisateur est inaccessible. Même cela peut être résolu en appliquant certaines règles de données. –