2013-06-27 3 views
5

Так выглядит общее пространство имен.Добавление префикса к именованному помощнику маршрута в пространстве имен

namespace :admin do 
    resources :posts 
end 

И он создает именованный маршрут, подобный этому;

new_admin_post_path 

вот мой вопрос; как я могу добавить префикс (например, «новый» в этом примере) к именованному маршруту в пространстве имен?

Скажем, мое определение маршрута нравится этому;

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

И он создает именованный маршрут;

admin_post_path 

Я хочу, чтобы добавить «новый» префикс к этому имени маршрута и сделать его похожим на new_admin_post_path, и я не хочу использовать resources.

+0

ли ваш контроллер сообщений находится в пространстве имен администратора? Если да, то вы можете добиться этого с первого раза, что вы написали. –

+0

Да, да. Но я не хочу это делать, используя или настраивая метод 'resources'. –

ответ

9

Просто попробуйте код в маршрутах.

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

Если вы не хотите, чтобы администраторское пространство имен было равно нулю, вы можете это сделать. для этого вам нужно поместить этот маршрут из имен: админ блок в маршрутах

namespace :admin do 
    # your other routes 
end 

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

Существуют другие маршруты, сопоставленные в пространстве имен 'admin', поэтому нет смысла отбрасывать префиксы« admin »и опускать каждый из них вручную. Если возможно, я хочу добавить префиксы к именованным маршрутам в пространствах имен, например, «ресурсы». –

+0

, пожалуйста, проверьте отредактированный ответ. –

+1

Мне не нравится идея заставить маршрут выйти из пространства имен, но я думаю, что сейчас я пойду с этим решением. Я проверил довольно много вариантов и прочитал некоторый исходный код, но он довольно много времени для такой проблемы. –