我有一个Rails应用程序,它有一个名为domain
的控制器,它有一个名为subdomain
和stats
的嵌套控制器。我在routes.rb
中定义了它们:
resources :domains do
resources :subdomains, :stats
end
我更改了域和子域模型的to_param以使用域名,例如:我得到的路由是http://site/domains/foo/subdomains/bar
。
我想整理一下,以便我可以只使用http://site/domains/foo/subdomains/bar
访问http://site/foo/subdomains/bar
而不是routes.rb
。我在match "/:id/" => "domains#show", :as => :domain
中尝试了以下内容:
http://site/foo
哪种方法很好,但它只能让我使用路径http://site/foo/subdomains/bar
,但例如domain_url
没有。我可以为每个相应的模型和嵌套模型创建匹配行,但除了/domains/foo/edit/
之外,它对其他帮助程序没有任何作用 - 即edit_domain_url指向/foo/edit
而不是resources
。
有没有办法更改路由,以便{{1}}生成指向根网址而没有“域”部分的帮助程序?
答案 0 :(得分:3)
路线中的单match
只会创建一条路线。资源助手一次创建许多路由。幸运的是,有很多自定义选项。如果您想从路径中省略/domains/
,则只需:
resources :domains, :path => "/" do
resources :subdomains, :stats
end
使用config/routes.rb
中的上述内容,正在运行rake routes
说明如下:
domain_subdomains GET /:domain_id/subdomains(.:format)
domain_subdomains POST /:domain_id/subdomains(.:format)
new_domain_subdomain GET /:domain_id/subdomains/new(.:format)
edit_domain_subdomain GET /:domain_id/subdomains/:id/edit(.:format)
domain_subdomain GET /:domain_id/subdomains/:id(.:format)
domain_subdomain PUT /:domain_id/subdomains/:id(.:format)
domain_subdomain DELETE /:domain_id/subdomains/:id(.:format)
domain_stats GET /:domain_id/stats(.:format)
domain_stats POST /:domain_id/stats(.:format)
new_domain_stat GET /:domain_id/stats/new(.:format)
edit_domain_stat GET /:domain_id/stats/:id/edit(.:format)
domain_stat GET /:domain_id/stats/:id(.:format)
domain_stat PUT /:domain_id/stats/:id(.:format)
domain_stat DELETE /:domain_id/stats/:id(.:format)
domains GET /(.:format)
domains POST /(.:format)
new_domain GET /new(.:format)
edit_domain GET /:id/edit(.:format)
domain GET /:id(.:format)
domain PUT /:id(.:format)
domain DELETE /:id(.:format)
看起来像你需要的所有路线!