我想要一个名为'portal'的命名空间控制器。
其中将嵌套资源,例如公司和产品。
我想要这样的路线:
/portal/:company_id/product/:id
工作
我可以得到
/portal/company/:company_id/product/:id
工作,但想删除 URL 中的"公司"
希望这是清楚的。 请记住,我需要命名空间模块门户存在。
我认为你可以使用scope
来实现你想要的。也许是这样的:
namespace "portal" do
scope ":company_id" do
resources :products
end
end
这将生成以下路由:
portal_products GET /portal/:company_id/products(.:format) {:action=>"index", :controller=>"portal/products"}
POST /portal/:company_id/products(.:format) {:action=>"create", :controller=>"portal/products"}
new_portal_product GET /portal/:company_id/products/new(.:format) {:action=>"new", :controller=>"portal/products"}
edit_portal_product GET /portal/:company_id/products/:id/edit(.:format) {:action=>"edit", :controller=>"portal/products"}
portal_product GET /portal/:company_id/products/:id(.:format) {:action=>"show", :controller=>"portal/products"}
PUT /portal/:company_id/products/:id(.:format) {:action=>"update", :controller=>"portal/products"}
DELETE /portal/:company_id/products/:id(.:format) {:action=>"destroy", :controller=>"portal/products"}
编辑:意外使用资源而不是资源。现已修复。
如果您直接拼写出路线,则可以将路线自定义为几乎任何您想要的路线,如下所示:
match '/portal/:company_id/product/:id', :to => 'companies_products#show'
:to
部分指定要使用的控制器和操作,这些控制器和操作应与您现在路由中的控制器和操作相匹配。如果你不确定那是什么,rake routes
会告诉你它的具体解释。