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
答案 0 :(得分:0)
这是您的“通用”路线:
/.*/
这不仅应匹配/ p1 / p2 / p3 / p4,还应匹配任意数量的参数
您可以尝试在通用路线之前声明路线,并使用您想要的特定参数数量:
/:parameter1/:parameter2/:parameter3
这样,/ p1 / p2 / p4将与第二条路线匹配,并在匹配通用路线之前离开。同样,/ p1 / p2 / p3 / p4会跳过3个参数路由,但会落入通用路径。