Récemment, j'ai changé quelques ressources imbriquées dans l'une de mes applications pour utiliser un routage peu profond. Cela fonctionne très bien et j'ai pu simplifier mon point de vue et mes contrôleurs.Itinéraires peu profonds avec path_prefix?
Cependant, je me sers d'un path_prefix avant:
map.with_options :path_prefix => "blog" do |blog|
blog.resources :posts do |posts|
posts.resources :comments
end
end
avis que tous les itinéraires sont préfixées avec "/ blog" comme prévu.
# $ rake routes
# posts GET /blog/posts(.:format) {:controller=>"posts", :action=>"index"}
# POST /blog/posts(.:format) {:controller=>"posts", :action=>"create"}
# new_post GET /blog/posts/new(.:format) {:controller=>"posts", :action=>"new"}
# edit_post GET /blog/posts/:id/edit(.:format) {:controller=>"posts", :action=>"edit"}
# post GET /blog/posts/:id(.:format) {:controller=>"posts", :action=>"show"}
# PUT /blog/posts/:id(.:format) {:controller=>"posts", :action=>"update"}
# DELETE /blog/posts/:id(.:format) {:controller=>"posts", :action=>"destroy"}
# post_comments GET /blog/posts/:post_id/comments(.:format) {:controller=>"comments", :action=>"index"}
# POST /blog/posts/:post_id/comments(.:format) {:controller=>"comments", :action=>"create"}
# new_post_comment GET /blog/posts/:post_id/comments/new(.:format) {:controller=>"comments", :action=>"new"}
# edit_post_comment GET /blog/posts/:post_id/comments/:id/edit(.:format) {:controller=>"comments", :action=>"edit"}
# post_comment GET /blog/posts/:post_id/comments/:id(.:format) {:controller=>"comments", :action=>"show"}
# PUT /blog/posts/:post_id/comments/:id(.:format) {:controller=>"comments", :action=>"update"}
# DELETE /blog/posts/:post_id/comments/:id(.:format) {:controller=>"comments", :action=>"destroy"}
La nouvelle configuration de routage ressemble à ceci:
map.with_options :path_prefix => "blog", :shallow => true do |blog|
blog.resources :posts do |posts|
posts.resources :comments
end
end
Maintenant, le préfixe "/ blog" manque dans certains de mes routes. Je cherche une solution pour récupérer les préfixes pour toutes les routes. Je sais que cela fonctionne avec les espaces de noms (map.namespace :blog do
), mais je veux empêcher la refactorisation de tous mes contrôleurs/vues/tests pour utiliser réellement les espaces de noms.
Tous les échantillons de code sont testés avec Rails version 2.3.2 et Ruby 1.8.7.
Salut Cristoph, si Ma réponse ne suffisait pas Je pourrais peut-être vous aider davantage, mais pourriez-vous clarifier le résultat final que vous recherchez et les critères que vous avez pour une solution idéale? Quel était le problème de test original que vous essayez de résoudre en effectuant ce changement? –
En fait, c'est assez simple: j'essaie de créer des routes peu profondes avec un préfixe de chemin * statique * tel que "/ blog" dans mon exemple. –
Est-ce que la réponse de Raimonds est de faire ce dont vous avez besoin? Ou sinon, quels sont les itinéraires spécifiques que vous recherchez? –