Rails 3 路由和命名空间



我想要一个名为'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会告诉你它的具体解释。

相关内容

  • 没有找到相关文章

最新更新