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+/ }
将限制性更强的路由放在路由文件的前面。
当我像下面这样订购我的资源时,/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+/ }
将限制性更强的路由放在路由文件的前面。