J’ai déjà parlé des routes, notamment du fichier routes.rb qui les définit. Par défaut, les url sont du type :
map.connect ':controller/:action/:id'
Si je prends cet exemple : http://localhost:3000/posts/edit/2, l’url est plutôt explicite. J’édite le post dont l’id est le numéro 2. J’en avais déjà parlé d’ailleurs. C’est ce schéma qu’il faut retenir :
http://localhost:3000/posts/edit/2
Application/Controller/Action/Id
Les Actions correspondent aux méthodes de mon Controller. Par défaut, c’est l’Action index qui est exécutée, c’est à dire pour http://localhost:3000/posts.
Voir toutes les routes disponibles
Dans mon fichier routes.rb j’ai 4 lignes :
map.resources :posts, :has_many => :comments map.root :controller => "home" map.connect ':controller/:action/:id' map.connect ':controller/:action/:id.:format'
Il y a les routes pour les posts, pour les commentaires (qui est imbriqué dans celui des posts donc ça donne http://localhost:3000/posts/1/comments par exemple), puis j’ai le format par défaut des routes.
Pour voir toutes les routes disponibles, je fais rake routes. Ca génère un gros output :
posts GET /posts(.:format) {:controller=>"posts", :action=>"index"} POST /posts(.:format) {:controller=>"posts", :action=>"create"} new_post GET /posts/new(.:format) {:controller=>"posts", :action=>"new"} edit_post GET /posts/:id/edit(.:format) {:controller=>"posts", :action=>"edit"} post GET /posts/:id(.:format) {:controller=>"posts", :action=>"show"} PUT /posts/:id(.:format) {:controller=>"posts", :action=>"update"} DELETE /posts/:id(.:format) {:controller=>"posts", :action=>"destroy"} post_comments GET /posts/:post_id/comments(.:format) {:controller=>"comments", :action=>"index"} POST /posts/:post_id/comments(.:format) {:controller=>"comments", :action=>"create"} new_post_comment GET /posts/:post_id/comments/new(.:format) {:controller=>"comments", :action=>"new"} edit_post_comment GET /posts/:post_id/comments/:id/edit(.:format) {:controller=>"comments", :action=>"edit"} post_comment GET /posts/:post_id/comments/:id(.:format) {:controller=>"comments", :action=>"show"} PUT /posts/:post_id/comments/:id(.:format) {:controller=>"comments", :action=>"update"} DELETE /posts/:post_id/comments/:id(.:format) {:controller=>"comments", :action=>"destroy"} root / {:controller=>"home", :action=>"index"} /:controller/:action/:id /:controller/:action/:id(.:format)
J’ai fait une image aussi parce que c’est pas très lisible :

Il y a plusieurs colonnes :
- le nom de la route
- le type de requête HTTP (GET,POST,DELETE…)
- l’url
- le Controller utilisé
- l’Action exécutée
On voit ici les routes des posts, des comments, et la route “root”, c’est à dire la page d’accueil.
Flux RSS