Rails 路径设置为 nil 的嵌套资源

Rails Nested Resources with path set to nil

当我像下面这样订购我的资源时,/websitename 有效但 /username 无效。

resources :websites, :path => '', :only => [:create, :show] do
    resources :pages, :only => [:create, :show, :edit]
end

resources :users, :path => '', :only => [:create, :show, :index]

当我像下面这样颠倒顺序时,/username 有效但 /websitename 无效。

resources :users, :path => '', :only => [:create, :show, :index]

resources :websites, :path => '', :only => [:create, :show] do
    resources :pages, :only => [:create, :show, :edit]
end

这就像一个正在抵消另一个什么的。有什么办法解决这个问题吗?封装它们的某种方法?我不知道我在做什么...

您只能拥有一个顶级资源,实际上没有 :path。它将始终匹配,所以以后什么都不会匹​​配。

使用命令行 - 您可以查看 rake routes 以查看每个路由期望的实际 url 模式和优先顺序。

这是有道理的,对吧?你不会知道 /georgia 是一个人还是一个地方。

如果您的网站路由有一些特别之处(比如它们都以 'site' 开头),那么您可以这样做。

资源:网站,:路径 => '',约束:{ id: /site+/ }

将限制性更强的路由放在路由文件的前面。