Rails路由嵌套资源

7
我有以下资源。
 resources :countries do
    resources :cities
 end    

 resources :cities do
    resources :streets
 end

它生成下一个路由。
GET    /countries/:country_id/cities(.:format)                          cities#index
POST   /countries/:country_id/cities(.:format)                          cities#create
new_country_city GET    /countries/:country_id/cities/new(.:format)                      cities#new
edit_country_city GET    /countries/:country_id/cities/:id/edit(.:format)                 cities#edit
GET    /countries/:country_id/cities/:id(.:format)                      cities#show
PUT    /countries/:country_id/cities/:id(.:format)                      cities#update
DELETE /countries/:country_id/cities/:id(.:format)                      cities#destroy


......
cities GET    /cities(.:format)                                                cities#index
POST   /cities(.:format)                                                cities#create
new_city GET    /cities/new(.:format)                                            cities#new
edit_city GET    /cities/:id/edit(.:format)                                       cities#edit
city GET    /cities/:id(.:format)                                            cities#show
PUT    /cities/:id(.:format)                                            cities#update
DELETE /cities/:id(.:format)                                            cities#destroy

我不希望可以访问没有国家ID的城市,但我也不想使用三级嵌套资源,所以我可以像下面这样更改路由。
 resources :countries do
        resources :cities
     end    

     resources :cities, :except => [:index, :destroy, :edit, :show, :create, :new, :update] do
        resources :streets
     end

有没有一种可以禁用所有操作的快捷方式,而不是在:except选项中编写所有默认操作?
2个回答

15
resources :cities, :only => [] do
    ...
end

在Rails 2.2中,您可以使用 :except => :all,但现在已不再适用。感谢您的理解。 - Ashitaka

1

您可以按照以下路线进行操作

  resources :topics do
    resources :solutions
  end
resources :solutions, only: [] do resources :reviews, except: [:show, :index] end

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接