如何在 Rails 4 中设置 2 级深度嵌套资源控制器?
How to set up 2 level deep nested resources controller in Rails 4?
如何在 Rails 4 中设置 2 级深度嵌套资源控制器?
我添加了控制器路径。我不确定这是不是问的。
我已经尝试使用 class Presupuestos::Ordenes::OrdeneItemsController
但它 returns 出现错误:
ActionController::RoutingError at /presupuestos/2/ordenes/1/orden_items/new
uninitialized constant Ordenes.
ActionDispatch::Routing::RouteSet::Dispatcher#controller
actionpack (4.2.0) lib/action_dispatch/routing/route_set.rb, line 62
ActionDispatch::Routing::RouteSet::Dispatcher#controller
actionpack (4.2.0) lib/action_dispatch/routing/route_set.rb, line 57
ActionDispatch::Routing::RouteSet::Dispatcher#serve
控制器路径
presupuesto_ordene_orden_items GET /presupuestos/:presupuesto_id/ordenes/:ordene_id/orden_items(.:format) presupuestos/ordenes/orden_items#index
POST /presupuestos/:presupuesto_id/ordenes/:ordene_id/orden_items(.:format) presupuestos/ordenes/orden_items#create
new_presupuesto_ordene_orden_item GET /presupuestos/:presupuesto_id/ordenes/:ordene_id/orden_items/new(.:format) presupuestos/ordenes/orden_items#new
edit_presupuesto_ordene_orden_item GET /presupuestos/:presupuesto_id/ordenes/:ordene_id/orden_items/:id/edit(.:format) presupuestos/ordenes/orden_items#edit
presupuesto_ordene_orden_item GET /presupuestos/:presupuesto_id/ordenes/:ordene_id/orden_items/:id(.:format) presupuestos/ordenes/orden_items#show
PATCH /presupuestos/:presupuesto_id/ordenes/:ordene_id/orden_items/:id(.:format) presupuestos/ordenes/orden_items#update
PUT /presupuestos/:presupuesto_id/ordenes/:ordene_id/orden_items/:id(.:format) presupuestos/ordenes/orden_items#update
DELETE /presupuestos/:presupuesto_id/ordenes/:ordene_id/orden_items/:id(.:format) presupuestos/ordenes/orden_items#destroy
Routes.rb
resources :presupuestos do
collection { post :import }
resources :ordenes, controller: 'presupuestos/ordenes' do
resources :orden_items, controller: 'presupuestos/ordenes/orden_items'
end
end
我想我已经找到问题了。
这是更新后的 Repo。我还没有测试它,因为我还没有 Postgres
安装在这台机器上。
问题是目录的问题。
您的控制器嵌套在 Presupuestos::Ordenes
模块中,但文件位于 app/controllers/presupuestos/orden_items/
中。由于 rails' Autoload
功能期望文件位于 app/controllers/presupuestos/ordenes/
中,因此无法找到它。
只需拉取 Repo 的更改或自行重命名文件夹即可。 app/controllers/presupuestos/orden_items/
=> app/controllers/presupuestos/ordenes/
如何在 Rails 4 中设置 2 级深度嵌套资源控制器?
我添加了控制器路径。我不确定这是不是问的。
我已经尝试使用 class Presupuestos::Ordenes::OrdeneItemsController
但它 returns 出现错误:
ActionController::RoutingError at /presupuestos/2/ordenes/1/orden_items/new
uninitialized constant Ordenes.
ActionDispatch::Routing::RouteSet::Dispatcher#controller
actionpack (4.2.0) lib/action_dispatch/routing/route_set.rb, line 62
ActionDispatch::Routing::RouteSet::Dispatcher#controller
actionpack (4.2.0) lib/action_dispatch/routing/route_set.rb, line 57
ActionDispatch::Routing::RouteSet::Dispatcher#serve
控制器路径
presupuesto_ordene_orden_items GET /presupuestos/:presupuesto_id/ordenes/:ordene_id/orden_items(.:format) presupuestos/ordenes/orden_items#index
POST /presupuestos/:presupuesto_id/ordenes/:ordene_id/orden_items(.:format) presupuestos/ordenes/orden_items#create
new_presupuesto_ordene_orden_item GET /presupuestos/:presupuesto_id/ordenes/:ordene_id/orden_items/new(.:format) presupuestos/ordenes/orden_items#new
edit_presupuesto_ordene_orden_item GET /presupuestos/:presupuesto_id/ordenes/:ordene_id/orden_items/:id/edit(.:format) presupuestos/ordenes/orden_items#edit
presupuesto_ordene_orden_item GET /presupuestos/:presupuesto_id/ordenes/:ordene_id/orden_items/:id(.:format) presupuestos/ordenes/orden_items#show
PATCH /presupuestos/:presupuesto_id/ordenes/:ordene_id/orden_items/:id(.:format) presupuestos/ordenes/orden_items#update
PUT /presupuestos/:presupuesto_id/ordenes/:ordene_id/orden_items/:id(.:format) presupuestos/ordenes/orden_items#update
DELETE /presupuestos/:presupuesto_id/ordenes/:ordene_id/orden_items/:id(.:format) presupuestos/ordenes/orden_items#destroy
Routes.rb
resources :presupuestos do
collection { post :import }
resources :ordenes, controller: 'presupuestos/ordenes' do
resources :orden_items, controller: 'presupuestos/ordenes/orden_items'
end
end
我想我已经找到问题了。
这是更新后的 Repo。我还没有测试它,因为我还没有 Postgres
安装在这台机器上。
问题是目录的问题。
您的控制器嵌套在 Presupuestos::Ordenes
模块中,但文件位于 app/controllers/presupuestos/orden_items/
中。由于 rails' Autoload
功能期望文件位于 app/controllers/presupuestos/ordenes/
中,因此无法找到它。
只需拉取 Repo 的更改或自行重命名文件夹即可。 app/controllers/presupuestos/orden_items/
=> app/controllers/presupuestos/ordenes/