允许Rails路由参数无序

时间:2015-05-26 08:26:20

标签: ruby-on-rails routing

我有以下路线:

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

如何规定匹配约束的顺序无关紧要?

2 个答案:

答案 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

与之前的回答一样,这不会分别捕捉参数,但您可以选择下一步做什么。

相关问题