У меня есть приложение Rails с маршрутами, определенными с пространством имен;
routes.rb:
resources :customers do
resources :employees do
# [1] First absence controller
resources :absences, only: %i{ index new create } do
# omit verbose
end
end
end
scope module: :employee, path: :employee, as: :employee do
# [2] Second absence controller
resources :absences, only: %i{ index new create } do
# omit verbose
end
end
Выписка из rails routes -c absences
:
Prefix Verb URI Pattern Controller#Action
reported_customer_employee_absence POST /customers/:customer_id/employees/:employee_id/absences/:id/reported(.:format) absences#reported
customer_employee_absences GET /customers/:customer_id/employees/:employee_id/absences(.:format) absences#index
POST /customers/:customer_id/employees/:employee_id/absences(.:format) absences#create
new_customer_employee_absence GET /customers/:customer_id/employees/:employee_id/absences/new(.:format) absences#new
avoid_employee_absence POST /employee/absences/:id/avoid(.:format) employee/absences#avoid
employee_absences GET /employee/absences(.:format) employee/absences#index
POST /employee/absences(.:format) employee/absences#create
new_employee_absence GET /employee/absences/new(.:format) employee/absences#new
Все работает как ожидалось в среде разработки и тестирования.
Но в производственной среде проблема заключается в том, что при вызове URL-адресов «сотрудник / отсутствующий» Rails запускает первый [1], а не второй [2] контроллер.
Мои версии:
Env | Ruby | Rails | Gem
--------------------------------------
Dev | 2.5.1p57 | 5.2.3 | 2.7.6
Test | 2.5.6p159 | 5.2.2.1 | 2.7.6.2
Prod | 2.3.3p222 | 5.2.3 | 2.5.2.1
- добавлено позже -
Возможно, это проблема с объявлением:
absences_controller.rb
class AbsencesController < ApplicationController
end
работник / absences_controller.rb
class Employee::AbsencesController < Employee::ApplicationController
end
Как employee/absence_controller.rb
это первый контроллер в пространстве имен сотрудников, у которого возникла проблема или что-то в этом роде?