Je sais que c'est un vieux thread, mais je viens de tomber sur la nécessité de séparer la navigation en fonction de l'espace de noms du contrôleur. La solution je suis venu avec était-ce dans mon application de mise en page:
<%= render "#{controller.class.name[/^(\w*)::\w*$/, 1].try(:downcase)}/nav" %>
Qui ressemble un peu compliqué mais en gros la suivante - il prend le nom de la classe contrôleur, qui serait par exemple "les Gens" pour un non-préfixée contrôleur, et "Admin::les Utilisateurs" pour l'un des espaces de l'un. À l'aide de [la] méthode de chaîne avec une expression régulière qui renvoie rien avant deux points, ou nil si il n'y a rien. Il change alors que pour les minuscules (les "essayer" est-il dans le cas où il n'y a pas d'espace de noms et le nil est retourné). Ensuite, cela nous laisse avec l'espace de noms ou nul. Ensuite, il suffit rend l'partielle avec ou sans l'espace de noms, par exemple, aucun espace de noms:
app/views/_nav.html.erb
ou dans l'admin de l'espace de noms:
app/views/admin/_nav.html.erb
Bien sûr, ces partiels doivent exister pour chaque espace de noms, sinon une erreur se produit. Maintenant, la navigation pour chaque espace de noms apparaît pour chaque contrôleur sans avoir à modifier tout ou contrôleur de vue.