Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 特定功能多路线与单路线_Ruby On Rails_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 特定功能多路线与单路线

Ruby on rails 特定功能多路线与单路线,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,我有一个rails应用程序,允许管理员处理电子退款。我遇到了一个问题,复杂性呈指数级增长,因为我给了用户更多的地方开始退款。我的路线越来越疯狂,我知道必须有更好的方法 假设用户可以在整个应用程序的4个不同位置处理退款。这给了我12条示例路线: get 'organization/:organization_id/invoices/refunds, to: 'refunds#index' get 'organization/:organization_id/invoices/refunds/n

我有一个rails应用程序,允许管理员处理电子退款。我遇到了一个问题,复杂性呈指数级增长,因为我给了用户更多的地方开始退款。我的路线越来越疯狂,我知道必须有更好的方法

假设用户可以在整个应用程序的4个不同位置处理退款。这给了我12条示例路线:

get  'organization/:organization_id/invoices/refunds, to: 'refunds#index'
get  'organization/:organization_id/invoices/refunds/new, to: 'refunds#new'
post 'organization/:organization_id/invoices/refunds, to: 'refunds#create'

get  'agency/:agency_id/invoices/refunds, to: 'refunds#index'
get  'agency/:agency_id/invoices/refunds/new, to: 'refunds#new'
post 'agency/:agency_id/invoices/refunds, to: 'refunds#create'

get  'destination/:destination_id/refunds, to: 'refunds#index'
get  'destination/:destination_id/refunds/new, to: 'refunds#new'
post 'destination/:destination_id/refunds, to: 'refunds#create'

get  'dashboard/refunds, to: 'refunds#index'
get  'dashboard/refunds/new, to: 'refunds#new'
post 'dashboard/refunds, to: 'refunds#create'
这些都将指向同一个控制器,这意味着在我的视图中,我需要一些非常抽象的多态路径用于退款表单和随后重定向到函数

除了这些乱七八糟的东西,如果我增加更多退款的地方,这些东西只会变得更乱七八糟,还有更好的解决办法吗?使用单一服务路由处理所有请求是否有任何不利之处:

get  'refunds/new, to: 'refunds#new'
post 'refunds, to: 'refunds#create'
然后,无论退款从何处开始,他们都会在以下位置结束:

http://mydomain/refunds/new
似乎最好让每个退款表单都有这样的uri上下文

http://mydomain/organizations/89/invoices/refunds/new
http://mydomain/dashboard/refunds/new

…但复杂性正在失控。有什么想法吗?

看来你是在重新创造。@Jordan我键入上述路线的方式与routes.rb中的显示方式不同。它们是嵌套的,但当倾斜时,它们就是这样显示的。当然,它们也都有自己的名称:组织机构、发票、退款路径、仪表板、退款路径等等。我的问题是,为每条路线提供单一视图所涉及的复杂性。