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 メソッドを上書きする場所を作成できますか?

4

2 に答える 2

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 に答える
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 に答える