При окончании направляющих 2 URL с IP-адресом вызывают ошибку маршрутизации?

Я пытаюсь создать URL в формате http://servername/find/by/CRITERION/VALUE

КРИТЕРИЙ является конечным множеством строк, как ЗНАЧЕНИЕ. Проблема, ЗНАЧЕНИЕ должно быть IP-адресом в некоторых ситуациях, и это вызывает меня ошибка маршрутизации.

Вот мой маршрут:

  map.find 'find/by/:criterion/:query', :controller => "find", :action => "by"

И ошибка, от журналов Полукровки:

Processing ApplicationController#index (for 127.0.0.1 at 2010-05-07 10:20:32) [GET]
ActionController::RoutingError (No route matches "/find/by/ip/1.2.3.4" with {:method=>:get}):
Rendering rescues/layout (not_found)

Если я посещаю/find/by/foo/bar или/find/by/foo/1234, у меня нет проблем. Я подозреваю, что проблемой мог бы быть вывод направляющих типов MIME на основе периодов в URL, но я действительно не знаю, как я могу отключить это. Я попытался передать a: значения по умолчанию => {: формат =>: HTML} к маршруту, но это заставляет Полукровке не удаваться запуститься полностью.

Любая справка ценится!

5
задан dave.io 7 May 2010 в 09:33
поделиться

1 ответ

Подстановка маршрутов сработала!

Мой маршрут сейчас:

map.connect 'find/by/*query', :controller => "find", :action => "by"

Это помещает все, что следует за / find / by / в массив, params [: query], по одному сегменту URL на объект массива. Для запроса /find/by/ip/1.2.3.4 это выглядит так:

["ip", "1.2.3.4"]

Так что я могу просто сослаться на params [: query] [0] и params [: query] [1].

Если у кого-нибудь есть способ лучше, опубликуйте его!

5
ответ дан 14 December 2019 в 19:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: