【发布时间】:2018-11-16 15:35:36
【问题描述】:
我正在使用rails_best_practices gem,它告诉我有一个错误:
过度使用路由自定义(customize_count > 8)
resources :stores do
collection do
get :api
end
member do
get :printer
get :delete
get :inventory
delete :inventory
get :daysheet
get :detailed_daysheet
get :labels
patch :restore
patch :print_labels
post :daysheet
end
end
导致这些路径:
api_stores_path GET /stores/api(.:format) stores#api
printer_store_path GET /stores/:id/printer(.:format) stores#printer
delete_store_path GET /stores/:id/delete(.:format) stores#delete
inventory_store_path GET /stores/:id/inventory(.:format) stores#inventory
daysheet_store_path GET /stores/:id/daysheet(.:format) stores#daysheet
detailed_daysheet_store_path GET /stores/:id/detailed_daysheet(.:format) stores#detailed_daysheet
labels_store_path GET /stores/:id/labels(.:format) stores#labels
DELETE /stores/:id/inventory(.:format) stores#inventory
restore_store_path PATCH /stores/:id/restore(.:format) stores#restore
print_labels_store_path PATCH /stores/:id/print_labels(.:format) stores#print_labels
POST /stores/:id/daysheet(.:format) stores#daysheet
重构后,我需要它仍然像现在一样使用 get 路由,例如 /stores/7/inventory 和 /stores/18/printer
如何压缩这些 get 路由以实现相同的路由目标?
【问题讨论】:
-
可能使用嵌套资源。你试过什么?
-
@jvillian 我在
member do中尝试了get ':store_action', constraints: { store_action: /printer|delete|inventory|daysheet|detailed_daysheet|labels/ },但这导致了错误。我将如何在这里使用嵌套资源?我在网上搜索了很长时间都没有成功。
标签: ruby-on-rails routing ruby-on-rails-5