2013-06-27 17 views
5

Tak wygląda zwykły obszar nazw.Dodawanie przedrostka do nazwanego pomocnika trasy w obszarze nazw

namespace :admin do 
    resources :posts 
end 

I tworzy tak nazwaną trasę jak ta;

new_admin_post_path 

Oto moje pytanie; jak mogę dodać prefiks (np. "nowy" w tym przykładzie) do nazwanej trasy w obszarze nazw?

Powiedzmy, że moja definicja trasy to lubi;

namespace :admin do 
    get 'post/new' => 'posts#new', as: 'post' 
end 

I tworzy tak nazwaną trasę;

admin_post_path 

chcę dodać przedrostek „nowy” do tej nazwie trasy i sprawiają, że wygląda jak new_admin_post_path i nie chcę używać resources.

+0

Czy kontroler wpisów znajduje się w przestrzeni nazw administratora? Jeśli tak, możesz to osiągnąć od pierwszego napisanego przez ciebie sposobu. –

+0

Tak, to prawda. Ale nie chcę tego robić za pomocą metody 'resources'. –

Odpowiedz

9

Po prostu spróbuj kodu na trasach.

namespace :admin, as: '' do 
    get '/post/new' => 'posts#new', as: 'new_admin_post' 
end 

Jeśli nie chcesz, aby obszar nazw administracyjnych był zerowy, możesz to zrobić. w tym celu musisz usunąć tę trasę z przestrzeni nazw: blok administracyjny na trasach

namespace :admin do 
    # your other routes 
end 

get '/admin/post/new' => 'admin/posts#new', :as => 'new_admin_post' 
+0

Istnieją inne trasy mapowane w przestrzeni nazw 'admin', więc nie ma sensu upuszczać prefiksów" admin "i ręcznie pomijać każdy. Jeśli jest to możliwe, chcę móc dodawać przedrostki do nazwanych tras w przestrzeniach nazw, na przykład 'resources'. –

+0

proszę sprawdzić edytowaną odpowiedź. –

+1

Nie podoba mi się pomysł, aby zmusić się do wyjścia z obszaru nazw, ale myślę, że pójdę z tym rozwiązaniem na razie. Sprawdziłem sporo opcji i przeczytałem jakiś kod źródłowy, ale jest to dość czasochłonne dla problemu takiego jak ten. –