0

在我的 rails 应用程序中,我将资源丰富的路由用于基本的 CRUD 功能。但在某些情况下,我会向我的控制器添加新的视图和方法(例如,特定的报告功能)。这些会自动包含在资源丰富的路线中吗?或者我是否必须在 routes.rb 中为每个获取或匹配行?

这就是我现在使用 routes.rb 的方式......似乎如果我必须明确指定所有内容,随着应用程序的增长,这将变得笨拙......

  resources :procedures

  resources :headlines

  devise_for :users

  resources :services

  resources :headlines  

  get  "welcome/index" 
  get "welcome/profile"
  get "welcome/kpi"
  get "welcome/inventory"
  get "public/index" 
  match "insurancelist" => "appointments#insurancelist"


  get "admin/index" 
  get "dentrix/index"
  get "dexis/index"
  get "eaglesoft/index"
  get "reports/index"
  get "reports/dentist"
  get "reports/office"
  get "reports/collections"


  resources :patients

shallow do
   resources :locations do
    resources :practitioners do
      resources :timecards
      resources :appointments
    end
  end
end
4

2 回答 2

1

您应该在此处阅读官方 Rails 指南中的路线

这里有一些针对您的问题的快速提示(我看到您想向您的资源添加一些非 REST 操作)。

让我们来看看。例如,您有一个项目模型和projects资源。并且您想print为项目项目添加操作(例如,在该操作中,您将准备要打印在纸上的报告)和published整个项目资源的操作(仅作为某种报告的选择操作):

你应该写到你的routes.rb下一行:

resources :projects do
  collection do
    get :published
  end

  member do
    get :print
  end
end

该代码为您提供了下一条路线:

GET    /projects           => projects#index
GET    /projects/published => projects#published
GET    /projects/new       => projects#new
POST   /projects           => projects#create
DELETE /projects/:id       => projects#destroy
PUT    /projects/:id       => projects#update
GET    /projects/:id       => projects#show
GET    /projects/:id/edit  => projects#edit
GET    /projects/:id/print => projects#print
于 2013-04-23T19:06:45.260 回答
1

这些额外的路线不会包含在资源丰富的路线中。不幸的是,对于您示例中的路由,确实无法压缩它们,并且它们每个都需要路由文件中的单独一行。

于 2013-04-23T19:09:20.813 回答