首页 > 解决方案 > 在 Rails 中更改命名空间

问题描述

我有命名空间路由

/示例/列表/

namespace :example do
  resource :list
  ...
end

需要将其更改为

/新示例/列表/

我当然可以通过更改 routes.rb 中的 example => newexample 来做到这一点,但是模块示例在项目中被大量使用。所以用这种方法改变它几乎需要更新每个Controller、Js、CSS文件。

有没有办法在 routes.rb 中映射 newexample => example 命名空间?或任何其他开箱即用的解决方案?

标签: ruby-on-railsroutingnamespaces

解决方案


您可以在使用带有该path选项的命名空间时指定路径。在您的示例中,您将有以下内容:

namespace :example, path: 'newexample' do
  resources :list
end

您也可以指定模块,就像这样

namespace :newexample, module: :example do
  resources :list
end

创建的路线将是相同的(/newexample/list将映射到example模块)。

不同之处在于路线助手名称:对于第一个示例,您的助手将是example_lists_path,在第二个示例中它看起来像newexample_lists_path(这意味着您必须更新视图中的链接)

如果您需要更多详细信息,还可以查看有关范围界定路线的文档


推荐阅读