2012-01-31 62 views
0

我有這樣扶手:避免串中的路線逸出參數

map.search_by_key '/search/:search_key', :controller => 'my_controller', :action => 'my_action' 

的PARAM :search_key定義的路由被用來使得所述URL是這樣的:

mysite.com/search/c_vehicles/c_cars/mk_suzuki 

其中SEARCH_KEY將是「 c_vehicles/c_cars/mk_suzuki「..

問題是..當創建這個網址與指定的路線 search_by_key_path("c_vehicles/c_cars/mk_suzuki")它逃脫s字符串..並創建類似:

mysite.com/search/c_vehicles%2Fc_cars%2Fmk_suzuki 

這工作得很好,但在地址欄看起來難看..我如何避免這個..

我使用的鐵軌2.2.2紅寶石1.8.6(古代我知道在升級過程中)..

想法?

回答

1

你可以使用這個globbed route和位串在你的控制器扯皮:

路線通配符是指定一個特定的參數應匹配的路由的所有剩餘部分的一種方式。例如

map.connect 'photo/*other', :controller => 'photos', :action => 'unknown' 

這條路線將匹配photo/12/photo/long/path/to/12同樣良好,產生路徑段的陣列作爲params[:other]值。

您的路線應該是這樣的:

map.search_by_key '/search/*search_key', :controller => 'my_controller', :action => 'my_action' 
#--------------------------^ Change the colon to an asterisk 

然後在你的控制器:

def my_action 
    search_for = params[:search_key].join('/') 
    # ... 
end 

同樣globbing technique同樣適用於Rails的3所以升級你的應用程序,這部分應該是一個簡單的事情,切換到新的方法routes.rb

這適用於2.3.8,雖然我不確定2.2.2。

+0

那工作..謝謝一堆 – saGii 2012-01-31 19:03:30