使用包含斜杠的参数路由Globbing

时间:2014-09-20 22:39:39

标签: ruby-on-rails ruby-on-rails-4

 match '/main/*params', to: 'main#parse', :constraints => {:url => /.*/}, as: 'parser',   via: 'get'
将使用params调用

/p1/p2/p3/p4/

如何更改路径定义以省略一个参数/p1//p3/p4/ 并且仍然有params包含输入的参数(/p1//p3/p4/)。现在params = p1/p3/p4/,其中一个正斜杠被移除。

控制器:

def parse
  p = params[:params].split("/")
  ...
end

1 个答案:

答案 0 :(得分:0)

这是您的“通用”路线:

/.*/ 

这不仅应匹配/ p1 / p2 / p3 / p4,还应匹配任意数量的参数

您可以尝试在通用路线之前声明路线,并使用您想要的特定参数数量:

/:parameter1/:parameter2/:parameter3

这样,/ p1 / p2 / p4将与第二条路线匹配,并在匹配通用路线之前离开。同样,/ p1 / p2 / p3 / p4会跳过3个参数路由,但会落入通用路径。