Ruby on rails 如何重构这些Rails路由?
我有以下路线。我希望应用程序的结构保持不变(一个控制器具有多个功能),但我希望使routes文件看起来更合理,更易于扩展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
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
,等等,它仍然会将它们全部映射到正确的控制器。不确定这是否正是你想要的…啊,太好了!我不得不删除名称空间名称前面的前导斜杠,但除此之外,效果非常好。