Wiem, że to stary wątek, ale właśnie natknąłem się na potrzebę oddzielnej nawigacji w zależności od przestrzeni nazw kontrolera. Rozwiązanie wymyśliłem było to w moim układzie aplikacji:
<%= render "#{controller.class.name[/^(\w*)::\w*$/, 1].try(:downcase)}/nav" %>
który wygląda nieco skomplikowany, ale w zasadzie wykonuje następujące - bierze nazwę klasy kontroler, który byłby na przykład „Ludzie” dla nie- kontroler nazwanych pseudonimów i "Admin :: Users" dla nazwy o podanej nazwie. Używając metody łańcuchowej [] z wyrażeniem regularnym, które zwraca cokolwiek przed dwoma dwukropkami lub zero, jeśli nic nie ma. Następnie zmienia się na małe litery ("try" jest tam, na wypadek, gdyby nie istniała przestrzeń nazw, a zwracana jest zero). To pozostawia nam przestrzeń nazw lub zero. Wtedy to po prostu sprawia, że częściowe z lub bez nazw, na przykład nie nazw:
app/views/_nav.html.erb
lub w przestrzeni nazw admin:
app/views/admin/_nav.html.erb
Oczywiście te partials musi istnieć dla każdej przestrzeni nazw w przeciwnym razie błędu występuje. Teraz nawigacja dla każdej przestrzeni nazw pojawi się dla każdego kontrolera bez konieczności zmiany kontrolera lub widoku.
To powinna być zaakceptowana odpowiedź. – pdoherty926
To pytanie zostało napisane przed Railsami 3, a moduły nie były tak naprawdę obsługiwane. Zaktualizowana zaakceptowana odpowiedź odzwierciedlająca bardziej aktualne wersje! – Steropes
Demodulize była kluczową odpowiedzią – Donato