Ruby on rails 如何重构这些Rails路由?

Ruby on rails 如何重构这些Rails路由?,ruby-on-rails,routes,Ruby On Rails,Routes,我有以下路线。我希望应用程序的结构保持不变(一个控制器具有多个功能),但我希望使routes文件看起来更合理,更易于扩展 get 'splunk/ocd/:order_id' => "splunk#order_collection_details" get 'splunk/ord/:order_id' => "splunk#order_request_details" get 'splunk/ord_ar/:request_id' => "splunk#ord_associat

我有以下路线。我希望应用程序的结构保持不变(一个控制器具有多个功能),但我希望使routes文件看起来更合理,更易于扩展

get 'splunk/ocd/:order_id' => "splunk#order_collection_details"
get 'splunk/ord/:order_id' => "splunk#order_request_details"
get 'splunk/ord_ar/:request_id' => "splunk#ord_associated_requests"
get 'splunk/ord_ad/:user_id/:deal_option_id' => "splunk#ord_additional_details"
get 'splunk/avatax_logs/:order_id' => "splunk#avatax_logs"
get 'splunk/billing_updates/:billing_record_id' => "splunk#billing_updates"
get 'splunk/cc_storage_details/:billing_record_id' => "splunk#cc_storage_details"

我同意@MikeBrant的观点,似乎没有太大的需要重构这个,但是如果你真的想,我可以试试这样的东西-

controller :splunk do
  get 'splunk/ocd/:order_id' => :order_collection_details
  get 'splunk/ord/:order_id' => :order_request_details
  get 'splunk/ord_ar/:request_id' => :ord_associated_requests
  get 'splunk/ord_ad/:user_id/:deal_option_id' => :ord_additional_details
  get 'splunk/avatax_logs/:order_id' => :avatax_logs
  get 'splunk/billing_updates/:billing_record_id' => :billing_updates
  get 'splunk/cc_storage_details/:billing_record_id' => :cc_storage_details
end

它更有条理,更容易阅读,但是如果你的整个应用程序都是围绕一个控制器,我不确定我是否看到了需要。

你说的更合理、更容易扩展是什么意思?你目前的痛点是什么,对我来说,这似乎是一套非常简单的路线?此应用程序是否已在生产中,您需要在其中维护当前路线?路线的第二行不会被触发,因为第一行将始终捕获该路线。@CarsonCole,实际上,URI是不同的,
ocd/
ord/
。是的,差别很小。很抱歉它造成了混乱。@jgrub该死,这两个看起来很相似。很好,这正是我想要的。我猜没有办法去除url匹配中的
splunk/
前缀。据我所知,有一种方法,但我不确定它会是什么。实际上,根据您是否希望url中的splunk/前缀,您可以删除它们。uri将是
ocd/:order\u od'、”avatax\u logs/:order\u id
,等等,它仍然会将它们全部映射到正确的控制器。不确定这是否正是你想要的…啊,太好了!我不得不删除名称空间名称前面的前导斜杠,但除此之外,效果非常好。