Ruby on rails 路由:在控制器资源之前加上项目名称前缀

Ruby on rails 路由:在控制器资源之前加上项目名称前缀,ruby-on-rails,routing,routes,Ruby On Rails,Routing,Routes,我正在尝试在我的Rails 3应用程序中使用以下路径 场景: 我的应用程序中有以下控制器: 实践 医生 病人 处方 放置:routes.rb中的每个资源为我提供来自 example.com/practices example.com/doctors/1/edit等 然而,我想要的是以下资源丰富的路线,例如: example.com/james_practice/docs转换为医生控制器 example.com/james\u practice/awesome\u处方路由到处方控制器等

我正在尝试在我的Rails 3应用程序中使用以下路径

场景
我的应用程序中有以下控制器:

  • 实践
  • 医生
  • 病人
  • 处方
放置:routes.rb中的每个资源为我提供来自

  • example.com/practices
  • example.com/doctors/1/edit等
然而,我想要的是以下资源丰富的路线,例如:

  • example.com/james_practice/docs转换为医生控制器
  • example.com/james\u practice/awesome\u处方路由到处方控制器等
    这两个都让我可以访问:机构名称,并通过所有助手(如编辑文档、路径(医生))进一步路由正确的控制器
我该怎么办?我用过

resources :prescriptions, :path => "/:practice/awesome_prescriptions"

但是,尽管它在“rake routes”中显示了正确的路由,但它仍然不能像预期的那样工作。

map.resources只是一种模式,更像是一种快捷方式。如果您想拥有示例中的URL,您应该使用“命名路由”。Rails 2.x的一个好的屏幕广播:

编辑:阅读Rails教程中的第3.2节:

p、 你还将面临一个案例,人们在他们的名字中使用“.”,这将导致问题。 这是我的“标签”路线


map.resources:tags,:requirements=>{:id=>%r([^/;,?]+)}

我想这就是您要寻找的路线:

scope :path => ":practice" do
  resources :docs, :controller => "doctors"
  resources :awesome_prescriptions, :controller => "prescriptions"
end

顺便说一句,你没有给我举病人的例子,所以我没有把它放在那里。

我试过按指定的路线走。但这意味着我必须写出该路线的每个用例,包括每个控制器的所有put/delete等请求?谢谢,这就是我的意思。“范围:路径”似乎是我不知道的魔法。