0

我有如下路线:

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

  resources :cities do
    resources :places
    resources :images
  end

我知道我可以做类似的事情:

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

但是我能做些什么来处理短的嵌套路由呢?

IE。/布拉格/天文钟?

我可以/应该在哪里覆盖默认的 url_for 方法?

4

2 回答 2

1

我同意尼克的回答,但补充说,如果你想取代 url_for 方法,你可以使用 :as

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

这样它会覆盖通常的 city_path url_for 方法。

于 2012-07-28T18:05:13.860 回答
1

您在区分位置和图像时会有一点问题,但这应该可以在没有任何控制器修改的情况下工作(假设您上面的嵌套路由有效)

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

或者

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

区分然后我会推荐

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

动态分配控制器

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

资源

于 2012-07-26T19:56:03.313 回答