在Rails路由

时间:2016-05-23 12:48:08

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

我有很多路线可以像:

possible routes:
- mac-book-retina-17-pid234-234
- hp-laptop-pid234-234
- vaoe-x12-pid234-234

我希望使用Ruby路由文件中的约束匹配所有操作。像

这样的东西
get 'products/:product_info', to: 'products#type', constraints: { product_info: /[a-z]+-a-z]+-a-z]+-pid\d+-\d+/ }

问题是/[a-z]+-/可能会重复1次,2次和3次,这使得很难为所有情况获得一致的共享Regex。 所有路由中唯一不变的部分是最后一部分:pid234-234引用产品ID和另一个sub_id。

我正在考虑这样的事情:找到所有字符串,直到每个这个部分(pid),但我不知道该怎么做。

2 个答案:

答案 0 :(得分:1)

我想说一个好的起点是dynamic-segments

get 'products/:product_info', to: 'products#type', constraints: { product_info: /[A-Z]\d{5}/ }

我希望这有助于

快乐黑客

答案 1 :(得分:0)

我想我找到了一个可能的解决方案:

(.*)pid\d+-\d+

此正则表达式将匹配所有字符串,直到它到达pid-12-12