我有以下路线:
get "/marflar/:id(/colour/:colour)(/wheels/:wheels), to: "marflar#index"
它匹配以下网址:
/marflar/123
/marflar/123/colour/red
/marflar/123/wheels/4
/marflar/123/colour/red/wheels/4
但它迫使我在车轮前放置颜色,即以下情况不起作用:
/marflar/123/wheels/4/colour/red
如何规定匹配约束的顺序无关紧要?
答案 0 :(得分:1)
希望,以下将做:
获取“/ marflar /:id(/:name_1 /:color)(/:name_2 /:wheels)”,约束:{name_1:/ color | wheels /,name_2:/ color | wheels /},to: “marflar#指数”
请检查并告知我们。
我建议使用url like / marflar /:id?color = red& wheels = 10。
答案 1 :(得分:1)
这个想法是将部分网址捕获到params中并以某种方式解析它们。
根据Rails Routing,你可以使用路线全球和通配符段
从指南中提取,例如:
<configuration>
<!--<property>
<name>name</name>
<value>dinesh</value>
</property>-->
<property>
<name>city</name>
<value>Delhi</value>
</property>
</configuration>
此路线与get 'photos/*other', to: 'photos#unknown'
或photos/12
匹配,将/photos/long/path/to/12
设为params[:other]
或12
。带有星号前缀的片段称为&#34;通配符片段&#34;。
在你的情况下:
long/path/to/12
与之前的回答一样,这不会分别捕捉参数,但您可以选择下一步做什么。