从这个article,我试图将路由拆分到config/routes/*.rb
中的不同文件。但是,按照步骤操作,如果draw_routes参数名称与名称空间名称相同,则会遇到错误。
首先,我写一个初始化程序:
class ActionDispatch::Routing::Mapper
def draw_routes(routes_name)
instance_eval(File.read(Rails.root.join("config/routes/#{routes_name}.rb")))
end
end
第二,将我的route.rb文件更改为:
Rails.application.routes.draw do
draw_routes :api_v1
end
第三,添加一个config/routes/admin.rb
文件:
namespace :admin do
resources :projects
end
然后,我遇到错误:
ActionController :: RoutingError(main:Object的未定义方法“名称空间”)
很奇怪,如果我将文件路径更改为config/routes/admin_routes.rb
并这样做:
draw_routes :admin_routes
这是正常的。
结论:
draw_routes :admin
与namespace :admin
(相同的符号名称)一起使用,它将导致undefined method 'namespace' for main:Object
错误。draw_routes :admin_routes
与namespace :admin
(不同的符号名称)一起使用,那将是正常的。