如何避免Rails 5嵌套资源命名空间路由中的双下划线

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何避免Rails 5嵌套资源命名空间路由中的双下划线相关的知识,希望对你有一定的参考价值。

我们有一些嵌套的资源/命名空间路由在升级到Rails 5之前有效,但现在使用Rails 5路由抱怨路由上没有明确的as:来命名路由/路径帮助器。

以下是我们的路由嵌套示例:

resources :categories, path: "schools", only: [:index, :show, :create] do
  namespace :categories, path: "", as: nil do
    resource :increment, only: [:new]
    namespace :admin, path: "admin" do
      resource :dashboard, only: [:show]
    end
  end
end

在rails 5升级之前,这将产生路线助手,如:

category_admin_dashboard_path GET /schools/:category_id/admin/dashboard(.:format)categories / admin / dashboards #show

在Rails 5升级之后,现在生成路由助手,如:

categories__category_admin_dashboard_path GET /schools/:category_id/admin/dashboard(.:format)categories / admin / dashboards #show

我们已经尝试过没有运气而没有嵌套路线......我确信我们做错了什么或非常规。

有人可以就如何纠正Rails路线的这种不良嵌套提出建议吗?

答案

namespace :categories替换scope module: :categories

resources :categories, path: "schools", only: [:index, :show, :create] do
  scope module: :categories do
    resource :increment, only: [:new]
    namespace :admin, path: "admin" do
      resource :dashboard, only: [:show]
    end
  end
end

以上是关于如何避免Rails 5嵌套资源命名空间路由中的双下划线的主要内容,如果未能解决你的问题,请参考以下文章

Rails 不区分嵌套在相同命名空间中的两个资源

Rails 5,具有命名空间资源的Pundit

Rails 命名空间与嵌套资源

嵌套命名空间路由到错误的控制器

如何避免 Rails 脚手架将模型放入命名空间

如何更新脚手架生成的 MVC + 路由,用于在 Rails 中具有 2 个 belongs_to 关系的嵌套资源