У меня есть приложение Rails 2.3.12, которое работает для другого приложения.Позвоните в другое приложение foo
;все URI, отправленные в мое приложение, будут начинаться с /foo
.Мое приложение Rails должно обрабатывать следующие случаи:
GET /foo
- мое приложение обрабатывает напрямую (возвращает список поддерживаемых функций) <anything-else> /foo
- возвращает 401 ( т.е. , GET
- единственный поддерживаемый глагол HTTP) <anything> /foo/<anything>
- обрабатывается моим приложением для передачи в приложение foo
.
К сожалению, все мои попытки до сих пор привели к тому, что все было выставлено либо по случаям 1 и 2, либо по случаю 3. Вот что у меня есть в моем routes.rb
на данный момент:
map.root(:controller => 'application',
:action => 'render_401_unauthorised')
map.connect('fooapp/*fooapp_ep_path',
:controller => 'foo',
:action => 'parsepath')
map.connect('fooapp',
:controller => 'other_controller',
:action => 'index',
:conditions => { :method => :get })
map.connect('fooapp',
:controller => 'application',
:action => 'render_401_unauthorised')
Я думаю, что моя проблема исчезла бы, если бы я мог убедиться, что первое map.connect
будет только совпадать, если *fooap_ep_path
не пусто - то есть , соответствуетрегулярное выражение %r!/foo/.+!
Можно ли это сделать?
Спасибо!
Обновлено Если есть какой-либо способ указать, что путь глоба должно быть [не] пустым, что, вероятно, обеспечит необходимый клей.