2012-07-26 234 views
0

我有途徑,如:短嵌套軌道路線

somedomain.com/cities/prague/places/astronomical-clock

resources :cities do 
    resources :places 
    resources :images 
    end 

我知道我可以這樣做:

match '/:id' => 'cities#show', :as => 'short_city' # /prague 

但我能做些什麼來縮短嵌套路線?

即。 /布拉格/天文時鐘?

我可以/應該在哪裏覆蓋默認的url_for方法?

回答

1

您將有一個輕微的問題的地方和圖像之間的區別,但是這應該沒有任何控制器改裝工作(假設你上面的嵌套路線工作)

match ':city_id/:id' => 'places#show' 

OR

match ':city_id/:id' => 'images#show' 

爲了區分,我會推薦

match ':city_id/places/:id' => 'places#show' 
match ':city_id/images/:id' => 'images#show' 

OR動態分配控制器

match ':city_id/:controller/:id', :action => :show 

資源

1

我將與尼克的回答是同意,但補充說,如果你想取代的url_for方法你可以使用:如

match '/:id' => 'cities#show', :as => 'city' 
match ':city_id/:id' => 'places#show', :as => 'city_place' 

這樣它會覆蓋通常的city_path url_for方法。