resources :leagues do
resources :schedule
end
這產生的PARAMS? 因此這將是:命名嵌套的路線
leagues/:id
leagues/:id/schedule/:schedule_id
resources :leagues do
resources :schedule
end
這產生的PARAMS? 因此這將是:命名嵌套的路線
leagues/:id
leagues/:id/schedule/:schedule_id
不,請不要這樣做。
這樣做的原因是它爲每個應用程序中的嵌套資源提供了一個通用接口。通過在你的應用程序中使它變得不同,你實際上將「反對谷歌」的Rails。 Rails有一套嚴格的約定,你應該堅持。當你走這條路時,事情會變得混亂。
但是,如果你想拍攝自己的腳,打個比方,你將需要手動定義的路由。以下是控制器中七種標準操作的路線:
get 'leagues/:id/schedules', :to => "schedules#index", :as => "league_schedules"
get 'leagues/:id/schedule/:schedule_id', :to => "schedules#show", :as => "league_schedule"
get 'leagues/:id/schedules/new', :to => "schedules#new", :as => "new_league_schedule"
post 'leagues/:id/schedules', :to => "schedules#create"
get 'leagues/:id/schedule/:schedule_id/edit', :to => "schedules#edit", :as => "ed it_league_schedule"
put 'leagues/:id/schedule/:schedule_id', :to => "schedules#update"
delete 'leagues/:id/schedule/:schedule_id', :to => "schedules#destroy"
正如您所看到的,這非常難看。但是,如果你真的真的真的想這樣做,那就是你如何做到這一點。
您可以設置資源路徑「參數」選項覆蓋默認的「ID」參數:
resources :leagues do
resources :schedule, param: schedule_id
end
裁判Rails的路由文件:http://guides.rubyonrails.org/routing.html#overriding-named-route-parameters