首页 > 解决方案 > Rails 5.2:是否可以从这些嵌套路由中删除第一个资源名称?

问题描述

我有嵌套资源:

resources :volumes, only: :show do
  resources :chapters, only: :show do
    resources :characters, only: :index, :show
    end
  end
end

这给了我以下路线:

volume_chapter_characters GET  /volumes/:volume_id/chapters/:chapter_id/characters(.:format)     characters#index
 volume_chapter_character GET  /volumes/:volume_id/chapters/:chapter_id/characters/:id(.:format) characters#show
           volume_chapter GET  /volumes/:volume_id/chapters/:id(.:format)                        chapters#show
                   volume GET  /volumes/:id(.:format)                                            volumes#show

我不确定它是否完全是 RESTful 但我想知道是否有一种方法可以删除volumes/URL 的一部分,以便我得到类似的东西:

volume_chapter_characters GET  /:volume_id/chapters/:chapter_id/characters(.:format)     characters#index
 volume_chapter_character GET  /:volume_id/chapters/:chapter_id/characters/:id(.:format) characters#show
           volume_chapter GET  /:volume_id/chapters/:id(.:format)                        chapters#show
                   volume GET  /:id(.:format)   

可以做到吗?

标签: ruby-on-railsrubyroutes

解决方案


您可以添加一个path选项。

Rails.application.routes.draw do
  resources :volumes, only: :show, path: '' do
    resources :chapters, only: :show do
      resources :characters, only: [:index, :show]
    end
  end
end

推荐阅读