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

时间:2019-03-20 18:26:21

标签: ruby-on-rails ruby-on-rails-4 routing ruby-on-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)category / admin / dashboards#show

在Rails 5升级之后,它现在会产生诸如以下的路线助手:

类别__category_admin_dashboard_path GET /schools/:category_id/admin/dashboard(.:format)category / admin / dashboards#show

我们尝试取消套路没有运气...我确定我们做错了或不合常规的事情。

有人可以提供有关如何纠正这种糟糕的Rails路线嵌套的建议吗?

1 个答案:

答案 0 :(得分:0)

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