Ruby / Rails:保留命名空间嵌套资源DRY

时间:2014-04-04 13:56:00

标签: ruby-on-rails ruby

我正在开发一个具有admin命名空间的小型Ruby / Rails应用程序。当管理员登录时,会将其重定向到显示公司徽标的小仪表板(此应用程序是Service Request Claim应用程序)。然后,管理员可以单击徽标,然后查看该公司的服务请求。

我的路线:

  resources :customers
  resources :service_requests do
    resources :notes
  end

  namespace :admin do
    get '', to: 'dashboard#index', as: '/'
    resources :companies do
      resources :service_requests
    end
  end

现在,将有2个服务请求控制器(一个用于/ admin,一个用于普通用户)。用户belong_to公司,并将看到他们所属公司的服务请求。

是否可以拥有2个服务请求控制器?

修改

以下是rake routes

的输出结果
                  service_requests GET    /service_requests(.:format)                                      service_requests#index
                                   POST   /service_requests(.:format)                                      service_requests#create
               new_service_request GET    /service_requests/new(.:format)                                  service_requests#new
              edit_service_request GET    /service_requests/:id/edit(.:format)                             service_requests#edit
                   service_request GET    /service_requests/:id(.:format)                                  service_requests#show
                                   PATCH  /service_requests/:id(.:format)                                  service_requests#update
                                   PUT    /service_requests/:id(.:format)                                  service_requests#update
                                   DELETE /service_requests/:id(.:format)                                  service_requests#destroy
                             admin GET    /admin(.:format)                                                 admin/dashboard#index
                 admin_set_company GET    /admin/set_company(.:format)                                     admin/dashboard#set_company
    admin_company_service_requests GET    /admin/companies/:company_id/service_requests(.:format)          admin/service_requests#index
                                   POST   /admin/companies/:company_id/service_requests(.:format)          admin/service_requests#create
 new_admin_company_service_request GET    /admin/companies/:company_id/service_requests/new(.:format)      admin/service_requests#new
edit_admin_company_service_request GET    /admin/companies/:company_id/service_requests/:id/edit(.:format) admin/service_requests#edit
     admin_company_service_request GET    /admin/companies/:company_id/service_requests/:id(.:format)      admin/service_requests#show
                                   PATCH  /admin/companies/:company_id/service_requests/:id(.:format)      admin/service_requests#update
                                   PUT    /admin/companies/:company_id/service_requests/:id(.:format)      admin/service_requests#update
                                   DELETE /admin/companies/:company_id/service_requests/:id(.:format)      admin/service_requests#destroy

1 个答案:

答案 0 :(得分:0)

如果您正在考虑向管理员和普通用户显示不同的结果,我认为这是一个正确的解决方案,保留两个控制器(一个用于管理员用户,另一个用于普通用户)。但是如果信息相同,而且演示文稿太......没有使用两个不同的控制器,你可以使用路径只使用一个控制器。