2013-04-23 160 views
0

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

这里是我如何与现在的routes.rb去...这似乎只是如果我有明确指定的一切,这是会得到unweildy随着应用的增长...

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 
+0

不,他们不会“自动添加”。你可以[添加足智多谋的路线](http://guides.rubyonrails.org/routing.html#adding-more-restful-actions)。 – 2013-04-23 19:09:09

回答

1

你应该阅读官方Rails指南中的路线here

这里有一些针对你的问题的快速提示(因为我看到你想为你的资源添加一些非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 
1

这些额外的路线没有得到列入足智多谋路线。对于你的例子中的路线,不幸的是,真的没有办法压缩它们,并且它们每个都需要在路线文件中有一个单独的行。