Sé que este es un hilo viejo, pero me encontré con la necesidad de tener una navegación separada según el espacio de nombres del controlador. La solución que se me ocurrió fue esto en mi diseño de la aplicación:
<%= render "#{controller.class.name[/^(\w*)::\w*$/, 1].try(:downcase)}/nav" %>
que parece un poco complicado, pero básicamente hace lo siguiente - que toma el nombre de la clase controlador, que serían, por ejemplo, "Personas" para un país que no controlador de espacio de nombres, y "Admin :: Users" para uno de espacio de nombres. Usando el método de cadena [] con una expresión regular que devuelve algo antes de dos puntos, o nada si no hay nada. A continuación, cambia eso a minúsculas (la "prueba" está allí en caso de que no haya espacio de nombres y se devuelve nil). Esto nos deja con el espacio de nombres o nil. Entonces simplemente hace que la parcial con o sin el espacio de nombres, por ejemplo no espacio de nombres:
app/views/_nav.html.erb
o en el administrador de espacio de nombres:
app/views/admin/_nav.html.erb
Por supuesto, estos parciales tiene que existir para cada espacio de nombres de otro modo un error ocurre. Ahora la navegación para cada espacio de nombres aparecerá para cada controlador sin tener que cambiar ningún controlador o vista.
Esta debería ser la respuesta aceptada. – pdoherty926
Esta pregunta se escribió antes de Rails 3, y los módulos no fueron realmente compatibles. ¡Respuesta aceptada actualizada para reflejar más versiones actuales! – Steropes
demodulizar fue la respuesta clave – Donato