Ruby on rails 向命名空间下的命名路由帮助器添加前缀

Ruby on rails 向命名空间下的命名路由帮助器添加前缀,ruby-on-rails,rails-routing,Ruby On Rails,Rails Routing,这就是公共名称空间的外观 namespace :admin do resources :posts end 它创建了一个命名路由,就像这样 new_admin_post_path namespace :admin do get 'post/new' => 'posts#new', as: 'post' end 这是我的问题;如何将前缀(如本例中的“new”)添加到命名空间下的命名路由 假设我的路线定义像这样 new_admin_post_path namespace :ad

这就是公共名称空间的外观

namespace :admin do
  resources :posts
end
它创建了一个命名路由,就像这样

new_admin_post_path
namespace :admin do
  get 'post/new' => 'posts#new', as: 'post'
end
这是我的问题;如何将前缀(如本例中的“new”)添加到命名空间下的命名路由

假设我的路线定义像这样

new_admin_post_path
namespace :admin do
  get 'post/new' => 'posts#new', as: 'post'
end
它创建了一个命名的路由,如

admin_post_path

我想将“new”前缀添加到此命名路由,使其看起来像
new\u admin\u post\u路径
,我不想使用
资源

只需在路由中尝试代码即可

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'

您的posts控制器是否驻留在管理命名空间中?如果是的话,那么你可以从你写的第一种方式开始实现它。是的。但是我不想使用
resources
方法或使用
resources
方法进行自定义。在
admin
命名空间下映射了其他路由,因此没有必要删除“admin”前缀并手动忽略每一个。如果可能的话,我希望能够在名称空间下为命名路由添加前缀,比如
resources
able-to-do。我不喜欢强迫路由离开名称空间的想法,但我想我现在会使用这个解决方案。我检查了很多选项并阅读了一些源代码,但对于这样的问题来说,这相当耗时。是的,这个想法与rails的结构不一致。如果你能找到更好的解决方案,请在这里发布。