Rails 3路由和名称空间
问题描述:
我想要一个名为“门户”的名称空间控制器。Rails 3路由和名称空间
在此将嵌套资源,如公司和产品。
我想喜欢路线:
/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"}
编辑:不小心使用的资源,而不是资源。现在修复。
+0
完美!谢谢 – robzolkos 2011-05-11 22:29:33
答
您可以自定义的路由你想近一切,如果你直接拼出来,像这样:
match '/portal/:company_id/product/:id', :to => 'companies_products#show'
的:to
部分指定控制器和动作的使用,你有什么,应该匹配你的路线现在。如果你不确定那是什么,rake routes
会告诉你它的具体解释。
当您使用“匹配”时,有什么问题? – apneadiving 2011-05-11 14:25:51