【问题标题】:Rails 5.2: Is it possible to drop the first resource name from these nested routes?Rails 5.2:是否可以从这些嵌套路由中删除第一个资源名称?
【发布时间】:2018-07-01 12:23:37
【问题描述】:

我有嵌套资源:

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,但我想知道是否有办法删除 URL 的 volumes/ 部分,这样我就会有类似的东西:

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)   

可以吗?

【问题讨论】:

  • 这可以做,但可能不应该做。如果你这样做,你需要非常仔细地观察路线的顺序。一个小错误,您的 GET /users 尝试加载 ID 为“users”的卷,而不是获取用户列表。

标签: ruby-on-rails ruby routes


【解决方案1】:

您可以添加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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-13
    • 2019-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多