2013-08-05 18 views
2

我想創建這樣在軌一些API:軌API路由複製

#   /teachers /teachers/:id 
    # Get  index  show 
    # Post create  
    # Put     update 
    # Delete remove  destroy 

我用下面的代碼生成教師:

# teachers 
    resources :teachers, only: [:index, :show, :create, :update, :destroy] do 
    collection do 
     delete 'remove' 
    end 
    end 
    delete '/teachers', to: redirect('/teachers/remove') 

由於有許多對象,如「程序','students','stuffs',現在我用這樣的代碼生成程序和其他代碼:

# programs 
    resources :programs, only: [:index, :show, :create, :update, :destroy] do 
    collection do 
     delete 'remove' 
    end 
    end 
    delete '/programs', to: redirect('/programs/remove') 

我覺得那裏有再有很多重複的,我可以創造一些助手來生成這些API

+0

'resources'只是一個method--你有什麼嘗試?不過,可能要考慮「除了」。 –

+0

看看這個部分:http://guides.rubyonrails.org/routing.html#segment-constraints - 你可以設置一個類似'/:controller(/:action(/:id))的通用路由'關於控制器和操作 – MrYoshiji

+0

我在考慮如何用控制器封裝模型,所以當我想從數據庫中獲取或保存數據時,我可以使用在控制器中定義的API –

回答

0

如果你有很多的地方,這是重複控制器,你可以遍歷:

[:teachers, :programs].each do |res| 
    resources res, only: [:index, :show, :create, :update, :destroy] do 
    collection do 
     delete 'remove' 
    end 
    end 
    delete "/#{res}", to: redirect("/#{res}/remove") 
end