Pour autant que je sache, il n'y a pas de moyen facile de le faire.
Je pense que la meilleure façon de faire cela est avec un ensemble de routes nommées.
Je n'ai pas testé cela, donc il n'y a aucune garantie, mais il devrait vous donner quelques indices même si cela échoue.
map.my_new_folder '/folders/:ancestors/:id/new', :controller => "folders",
:action => "new", :ancestors => /^(\d+\/?)*$/
map.my_show_folder, '/folders/:ancestors/:id', :controller => "folders",
:action => "show", :ancestors => /^(\d+\/?)*$/
map.my_edit_folder '/folders/:ancestors/:id/edit', :controller => "folders",
:action => "edit", :ancestors => /^(\d+\/?)*$/
...
Vous devrez former la chaîne ancêtre vous et le transmettre comme une option pour my_x_folder_path. Mais vous devriez obtenir les jolies URL que vous voulez. Vous pourriez être mieux de l'extraire à un assistant qui peut également sélectionner dynamiquement le chemin de la ressource ou le chemin d'accès nommé en fonction de l'existence des ancêtres.