路由:控制器资源之前的前缀项名称

时间:2011-01-25 01:41:21

标签: ruby-on-rails routing routes

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

方案
我的应用程序中有以下控制器:

  • 实践
  • 医生
  • 患者

建立:routes.rb中每个人的资源给我路线

  • example.com/practices
  • example.com/doctors/1/edit etc

然而,我想要的是以下资源丰富的路线,例如:

  • example.com/james_practice/docs 转换为医生控制器
  • example.com/james_practice/awesome_prescriptions 路由到处方控制器等。
    这两个都让我可以访问:practice 名称,并使用所有帮助程序(如edit_docs_path(doctor)等)路由正确的控制器。

我该怎么做?我用过

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

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

2 个答案:

答案 0 :(得分:1)

我认为这是您正在寻找的路线:

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

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

答案 1 :(得分:0)

map.resources只是一种模式,更像是一种快捷方式。如果您想要在示例中使用URL,则应使用“命名路由”。 Rails 2.x的一个很好的截屏视频:http://railscasts.com/episodes/34-named-routes

编辑:阅读Rails教程中的第3.2节:http://guides.rubyonrails.org/routing.html

P.S。此外,你将面临人们使用“。”的情况。在他们的名字,它会导致问题。 这是我的“标签”路线

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