将任意url与控制器匹配

时间:2011-06-01 02:32:38

标签: ruby-on-rails

大家好 我正在尝试配置routes.rb以允许我进行以下映射:

/links/quick/"arbitrary comment"/"http://www.arbitrary-site.com/test?a=1" 

links#quick (LinksController.quick)?

我来自django并习惯使用正则表达式进行这种映射。 rails有相同的东西吗? http://edgeguides.rubyonrails.org/routing.html没有提及类似的内容,IRC也没有帮助。

1 个答案:

答案 0 :(得分:0)

如果你想要一个路线并传入其他参数,那么通常你会使用如下语法:

match '/links/quick/:comment/:url/test' => controller

用冒号表示的参数称为段键,它们将接受您放入其中的任何值。然后,您可以通过调用params [:segment_key]来访问控制器中的这些段密钥(其中:segment_key是您的段密钥的名称) 但是,您可以过滤使用分段约束接受的内容。例如,如果你只想在:comment参数中接受一个整数,你可以写:

match '/links/quick/:comment/:url/test' => controller, :constraints => {:comment => /\d+/}

重要的是要知道正则表达式锚定在两端,所以它不会接受像string99withanumber

这样的东西

有关细分受众群限制的详细信息,请参阅此link