2011-01-25 121 views
0

我想要获得下列路线在我的Rails 3应用程序中工作。路由:控制器资源之前的前缀项名称

方案
我在我的应用程序下面的控制器:为每个资源:

  • 实践
  • 医生
  • 患者
  • 处方

搭他们在路线上.RB让我从

  • example.com/practices
  • 路线example.com/doctors/1/edit等

我想不过有如下足智多谋的路线,例如:

  • example.com/james_practice/docs其转化为医生控制器
  • example.com/james_practice/awesome_prescriptions的路由到处方控制器等等,等等
    这两个给我访问:实践名,此外航线正确的控制器与像edit_docs_path(医生)的所有助手等。

我该怎么办?我已经使用了

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

虽然它在“rake routes”中显示了正确的路线,但它仍然无法按预期工作。

回答

1

我想这就是你要找的路线:

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

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

+0

谢谢,这就是我的意思。 “范围:路径”似乎是我不知道的魔法。 – jrnk

0

map.resources只是一种模式,更像是一种快捷方式。如果你想在你的例子中使用URL,你应该使用“命名路线”。一个良好的截屏Rails的2.X:http://railscasts.com/episodes/34-named-routes

编辑:阅读部分3.2 Rails的教程:http://guides.rubyonrails.org/routing.html

附:你也会面对人们使用“”的情况。在他们的名字,它会导致问题。 这里是我的路线“标签”

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

+0

我试过去命名路线的方式。但是这意味着我必须写出该路线的每个用例,包括每个控制器的所有放入/删除等请求? – jrnk