2009-05-31 6 views
0

Est-il possible d'obtenir un chemin pour les chemins enfants?Inspection de routage

Je veux dire étant donné les itinéraires suivants:

map.resources :users do |user| 
    user.resources :articles 
    ... 
end 

Si je donne path = "utilisateurs/1", est-il possible d'obtenir les itinéraires utilisateurs/1/modifier, les utilisateurs/1/articles, utilisateurs/1/articles/nouveau?

Merci d'avance. -Satynos

Répondre

0

Oui, les définitions de l'itinéraire sont très accessible Le code suivant devrait vous fournir la liste des itinéraires pour un contrôleur spécifique:

rts = ActionController::Routing::Routes.routes.reject do |rt| 
    rt.defaults[:controller] != "users" || !rt.significant_keys.index(:id) 
end 

Vous pouvez exécuter le code suivant dans la console pour voir les routes:

rts = ActionController::Routing::Routes.routes.reject do |rt| 
    rt.defaults[:controller] != "users" || !rt.significant_keys.index(:id) 
end; nil 
rts.each do |rt| 
    puts "Route: #{rt.segments}" 
end; nil 

Les segments sont effectivement éclaté en un tableau également, ce qui signifie qu'il devrait être facile de filtrer davantage la liste uniquement sur les routes qui nécessitent un identifiant d'utilisateur.

2

Il y a une tâche de râteau pour le faire,

rake routes | grep "users" 

Depuis une machine nix outta le faire

S'il y a quelque chose d'intelligent que vous voulez faire dans une application Rails, pourrait être utile de vérifier la source pour cela sous rails/rails