所以我一直在寻找项目中几个文件夹的命名空间。
当我命名1-Layer deep时,我没有任何问题,但只要我将路由范围缩小到更深的另一个文件夹(以及相应的控制器文件夹/名称),我就会收到此错误:
Routing Error uninitialized constant Individuals
我的意思是文件夹深度,是tyres_controller.rb
,以及项目中的这一层深度:
1层
app/controllers/<1st_level_deep>/tyres_controller.rb
2层
app/controllers/<1st_level_deep>/<2nd_level_deep>/tyres_controller.rb
以下是两种情况:
1层深度名称空间控制器
app/controllers/tyre_checks/tyre_checks_controller.rb
module TyreChecks
class TyreChecksController < ApplicationController
...
end
end
routes.rb
scope module: 'tyre_checks' do
resources :tyre_checks, only: [:new, :create] do
end
end
...
match '/tyre-checks', to: 'tyre_checks/tyre_checks#new', via: :get, as: :start_tyre_check
2层深层命名空间控制器
app/controllers/tyre_checks/individuals/tyre_checks_controller.rb
module TyreChecks
module Individuals
class TyreChecksController < ApplicationController
...
end
end
end
routes.rb
scope module: 'tyre_checks' do
scope module: 'individuals' do
resources :tyre_checks, only: [:new, :create] do
end
end
end
...
match '/individuals/tyre-check', to: 'individuals/tyre_checks/tyre_checks#new', via: :get, as: :start_tyre_check
如果您向我提出要求
/
结束时解释请求中额外individuals
的方式: to: 'individuals/tyre_checks/tyre_checks#new', via: :get, as: :start_tyre_check
答案 0 :(得分:1)
我意识到我做了什么,在定义路线时犯了一个简单的错误,根据初始匹配的网址(match '/individuals/tyre-check'
)误导了自己。
基本上,如果你看一下控制器结构,它就是这样命名的:
module TyreChecks
module Individuals
class TyreChecksController < ApplicationController
...
end
end
end
当翻译为controller#action
格式时:
tyre_checks/individuals/tyre_checks#action
但我所做的就是:
individuals/tyre_checks/tyre_checks#action
match '/individuals/tyre-check'
现在全部排序;)