【问题标题】:How to set up 2 level deep nested resources controller in Rails 4?如何在 Rails 4 中设置 2 级深度嵌套资源控制器?
【发布时间】:2015-11-27 21:43:45
【问题描述】:

如何在 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

【问题讨论】:

  • 你能发布返回的完整错误吗?
  • 签出命名空间rails api
  • 哦..我的错误我的意思是文件的路径^^。例如/Users/johndoe/Developer/...。如果这是一个 Git 项目和开源项目,那么您可以将其上传到 Github 并给我 repo 的 URL。但是,如果您不想公开代码库,请不要这样做!
  • 谢谢,这是网址:github.com/davefogo/ideapp

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


【解决方案1】:

我想我找到了问题所在。

这是更新后的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/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多