4
我試圖構造URL格式爲http://servername/find/by/CRITERION/VALUE使用IP地址結束Rails 2 URL會導致路由錯誤?
CRITERION是一個有限的字符串集合,正如VALUE。麻煩的是,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)
如果我訪問/發現/通過/富/酒吧或/查找/由/富/ 1234我沒有問題。我懷疑問題可能是Rails根據URL中的句點推斷MIME類型,但我真的不知道如何禁用它。我試過給路由傳遞一個:defaults => {:format =>:html},但是導致Mongrel無法完全啓動。
任何幫助表示讚賞!
我真的很喜歡這個解決方案。將明確問題。稍後可能會派上用場。 :)感謝你。 – 2010-05-07 11:26:05
請確保在您的控制器中使用params [:query]的最佳實踐來避免SQL注入攻擊。在這種情況下,我會確保參數實際上是一個IP地址。 '需要'ipaddr'; IPAddr.new params [:query]如果參數不是IP地址,則IPAddr會引發一個'ArgumentError:invalid address'。 – scarver2 2012-10-27 12:06:27