【问题标题】:Adding a namespace within a resource in rails在 Rails 的资源中添加命名空间
【发布时间】:2014-12-12 17:27:13
【问题描述】:

我试图弄清楚如何在 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)

【问题讨论】:

  • 你喜欢这些路线吗? /accounts/buyer/contracts/:id/stuff
  • @Saravanan 我修改了问题。看看是否有帮助。问题是一旦它进入一个命名空间,它似乎失去了它的上下文,并且不再知道它看起来的嵌套资源。

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


【解决方案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

【讨论】:

  • 谢谢!添加“成员做”是导致问题的原因。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-12
  • 2011-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-04
相关资源
最近更新 更多