在命名空间下为命名路由助手添加前缀

这就是常见命名空间的样子。

namespace :admin do resources :posts end 

它创建了一个像这样的命名路线;

 new_admin_post_path 

这是我的问题; 如何在命名空间下的命名路由中添加前缀(如本例中的“new”)?

让我们说我的路线定义喜欢这个;

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

它创造了一条命名路线,如;

 admin_post_path 

我想为这个命名路由添加“new”前缀,使其看起来像new_admin_post_path ,我不想使用resources

只需尝试路线中的代码即可。

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

如果您不想将admin命名空间设置为nil,那么您可以执行此操作。 为此,您需要将该路由放在命名空间之外:路由中的admin块

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