Использование github-подобных цепных маршрутов в рельсах
У меня есть URL, подобные этому:
'localhost:3000/document_managers/[:module_name]'
'localhost:3000/document_managers/[:module_name]/1/2/3/.' # can be any level deep
Вот определение маршрута для них:
map.connect '/document_managers/:module',
:controller => "document_managers",
:action => :new_tree,
:module => ["A","B","C"]
map.connect '/docuemnt_managers/:module/*path',
:controller => "document_managers",
:action => "new_tree",
:module => ["A","B","C"]
Вот проблема:
Идея, что значение имени модуля не может быть ничем, кроме как из указанного выше массива, т.е. ("A", "B", "C "), как в любое время, URL должен быть примерно таким:
localhost:3000/document_managers/A/1
или
localhost:3000/document_managers/B/221/1
или
localhost:3000/document_managers/C/121/1
, но этоэто не так, даже если localhost:3000/document_managers/D/121/1
обрабатывается как действительный URL-адрес, а для модуля задано значение D, даже если "D" не указан в массиве выше
Мне нужен URL-адрес localhost:3000/document_managers/A
чтобы также перенаправить на то же действие, т.е. new_tree, если дополнительный параметр не указан, поскольку в URL-адресе содержатся дополнительные параметры
localhost:3000/document_managers/C/121/1
, тогда URL-адрес перенаправляется соответствующим образом на нужный контроллер и действие, но если URL-адрес содержит только путьпока имя модуля не будет возвращено Rails routes
ActionController::UnknownAction
, я не знаю почему, так как я уже определил контроллер и действие.