Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.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 - Fatal编程技术网

Ruby on rails 铁路路线,在这种情况下,更优化的路线方案?

Ruby on rails 铁路路线,在这种情况下,更优化的路线方案?,ruby-on-rails,Ruby On Rails,(背景) 我有两种视图类型,所有请求都映射到这两种视图类型,view1action和view2action 对于view1类型,url可能包含属性“a”、“b” 对于view2类型,url当然具有属性“c”,并且可能包含属性“a”、“b”和“d” 请问我下面使用的路线方案是否最优。 如果有人能指出更好的方法,我将不胜感激 get '/(:a)', to: 'controller#view1action', default: { a: 'A', b: 'B' } get '(/:a)(/:

(背景)

我有两种视图类型,所有请求都映射到这两种视图类型,view1action和view2action

对于view1类型,url可能包含属性“a”、“b”

对于view2类型,url当然具有属性“c”,并且可能包含属性“a”、“b”和“d”

请问我下面使用的路线方案是否最优。 如果有人能指出更好的方法,我将不胜感激

  get '/(:a)', to: 'controller#view1action', default: { a: 'A', b: 'B' }
  get '(/:a)(/:b)', to: 'controller#view1action', default: { a: 'A', b: 'B' }
  get '(/:a)(/:b)/view2action/:c(/:d)', to: 'controller#view2action', default: { a: 'A', b: 'B', d: 0 }
另外,我正在使用控制台查看URL是如何映射的

> r = Rails.application.routes
> r.recognize_path('/')
 => {:default=>{:a=>"A", :b=>"B"}, :controller=>"controller", :action=>"view1action"} 
为什么默认值是:a=>“a”,:b=>“b”不是主散列的一部分,而是作为主散列中的一个单独散列(:default)


谢谢。

这个例子太做作了,任何人都无法给出任何有意义的建议。谢谢。试图把问题弄清楚。如果有帮助,请告诉我。