Github como rutas en Rails

Usando github como cadena de rutas en los carriles

Tengo URLs similares a esto:

'localhost:3000/document_managers/[:module_name]' 'localhost:3000/document_managers/[:module_name]/1/2/3/.' # can be any level deep 

Aquí está la definición de ruta para ellos:

 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"] 

Aquí está el problema:

  1. La idea de que el valor del nombre del módulo no puede ser nada, excepto de la matriz anterior, es decir (“A”, “B”, “C”), como en cualquier momento la URL debe ser algo así como

    localhost:3000/document_managers/A/1 o

    localhost:3000/document_managers/B/221/1 o

    localhost:3000/document_managers/C/121/1

    pero ese no es el caso a pesar de que localhost:3000/document_managers/D/121/1 se trata como una URL válida y el módulo se establece en D aunque la “D” no se encuentra en la matriz mencionada anteriormente

  2. Quiero que el URL localhost:3000/document_managers/A también redirija a la misma acción, es decir, new_tree si no se proporciona el parámetro adicional, ya que en la URL contienen parámetros adicionales
    localhost:3000/document_managers/C/121/1 entonces la URL se redirige adecuadamente al controlador y la acción deseados, pero si la URL solo contiene la ruta de acceso hasta que el nombre del módulo Rails devuelva una routes ActionController::UnknownAction No sé por qué Como ya he definido el controlador y la acción.

En Rails 3.1, puedes hacer esto en tu archivo de rutas para obtener lo que deseas:

 match '/document_managers/:module', :controller => "document_managers", :action => :new_tree, :constraints => {:module => /[ABC]/}