在rails中的资源中添加命名空间

时间:2014-12-12 17:27:14

标签: ruby-on-rails ruby-on-rails-4 rails-routing nested-resources

我试图弄清楚如何在Rails 4应用程序中进行一些路由。这是我的第一个问题,所以我会尽我所能。

我有帐户。用户可以属于多个帐户。 一个帐户可以有多个"模块"已启用 - 买方/卖方。

resources :accounts do
  member do
    namespace :seller do
      resources :contracts do
        get "history", on: :member
      end
    end
    namespace :buyer do
      resources :contracts do
        get "history", on: :member
      end
    end
  end
end

理想情况下,帐户和合同(在每个命名空间中)将保持足够的资源。

问题在于,当您看到创建的路由时,嵌套合同资源和帐户都在参数中使用:id

stuff_buyer_contract GET /accounts/:id/buyer/contracts/:id/stuff(.:format)

我认为我会得到一堆"浅路线"答案,但无论如何都要这样做,:id参数是正确的吗?

我希望路由看起来像:

stuff_buyer_contract GET /accounts/:account_id/buyer/contracts/:id/stuff(.:format)

1 个答案:

答案 0 :(得分:1)

尝试以下路线配置:

  resources :accounts do
      namespace :seller do
        resources :contracts do
          get "history", on: :member
        end
      end
      namespace :buyer do
        resources :contracts do
          get "history", on: :member
        end
      end
  end