如何在Rails 4中设置2级深层嵌套资源控制器?

时间:2015-11-27 21:43:46

标签: ruby-on-rails controller nested-resources

如何在Rails 4中设置2级深层嵌套资源控制器?

我添加了控制器路径。我不确定这是不是被问到了。

我已尝试使用class Presupuestos::Ordenes::OrdeneItemsController但它会返回错误:

     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

1 个答案:

答案 0 :(得分:1)

我想我已经找到了问题。

以下是更新后的Repo。我没有测试过,因为我没有在这台机器上安装add_column :recipes, :likes_count, :integer, default: 0

问题是目录存在问题。

您的控制器嵌套在Postgres模块中,但文件位于Presupuestos::Ordenes。由于rails {app/controllers/presupuestos/orden_items/功能预计该文件位于Autoload,因此无法找到它。

只需提取Repo的更改或自行重命名该文件夹即可。 app/controllers/presupuestos/ordenes/ => app/controllers/presupuestos/orden_items/