2010-10-24 4 views
0

Je veux que les urls suivantes pour mon UserController:Je veux que le modèle urls suivant, s'il vous plaît aider J'utilise des rails 3

localhost/user/join 
localhost/user/login 
localhost/user/user_name (this can be any name in here, it should fire the 'profile' action) 

ensuite dans le répertoire/utilisateur/user_name_here/dossier que je veux:

/user/user_name/blah1/ 
/user/user_name/blah2/ 
/user/user_name/blah3/ 

Il semble faire des ressources: l'utilisateur ne crée que des choses pour index/show/get, donc je suis confus quant à la façon de faire autre que de créer autant de lignes match '/user/join' etc dans les routes.

Répondre

2
match "user/:user_name" => "users#show" 

puis/utilisateur/nom d'utilisateur redirigera vers le contrôleur de l'utilisateur, appelez la méthode show, et passer le: user_name param

vous pouvez faire la même chose à d'autres actions qui n'a pas les paramètres NEET,

match '/user/login' => "sessions#new" 
match '/user/join' => "user#new" 
0

Yup - 'resources: user' est juste un échafaudage pour les méthodes CRUD habituelles. Si vous voulez des chemins supplémentaires, vous allez devoir créer des routes (c'est la seule façon que votre application sait comment router une URL donnée vers un contrôleur et une méthode donnés). Le friendly_id gem fait quelque chose de similaire à ce que vous suggérez (bien que je pense que c'est la méthode monkey-patching sur les classes ActiveRecords plutôt que de gérer le routage spécifiquement).

Questions connexes