将Rails路由分隔到不同文件时,“ ActionController :: RoutingError:main:Object的未定义方法'namespace'”

时间:2018-07-16 08:28:36

标签: ruby-on-rails rails-routing

从这个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

这是正常的。

结论:

  1. 如果我将draw_routes :adminnamespace :admin(相同的符号名称)一起使用,它将导致undefined method 'namespace' for main:Object错误。
  2. 如果我将draw_routes :admin_routesnamespace :admin(不同的符号名称)一起使用,那将是正常的。

0 个答案:

没有答案