2012-07-26 150 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方法。