Rails 3路由通配符

时间:2011-07-06 16:23:30

标签: ruby-on-rails ruby-on-rails-3 rails-routing

我目前正在Rails 3应用程序中设置路由,如果有人能指出我正确的方向,我将不胜感激。

基本上,我正在设置一些路由来为一些链式下拉列表提供数据,并且希望能够拥有以下路由:

/vehicles/trims/01299999
/vehicles/trims/02299999

其中01299999和02299999是两个不同参数的ID(在这种情况下,假设为01299999载荷:vehicle_make进入参数,02299999为:参数中的fuel_type)。我知道我可以确保它们被路由到正确的控制器动作并使用约束加载正确的参数。

然而,这使得复杂化的原因是我希望能够以任何顺序在URL中指定多个选项,例如:

/vehicles/trims/01299999/02299999

/vehicles/trims/02299999/01299999

并且这些将根据id号的结构加载正确的参数(所以如果它以'012'开头,它应该始终是:vehicle_make,如果它开始'022',它应该总是:fuel_type。我怎么能这样做?

作为旁注,如果有人能指出如何约束我的模型的id列,那将是很好的,这样当创建车辆制造时,其ID应始终从012开始,依此类推。

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

路由通配符捕获由/分隔的任意数量的URL元素,如下所示:

match '/vehicles/trims/*trims' => 'vehicles#trims'
# change 'vehicles#trims' to match your controller and action names

你说:

  

作为旁注,如果是的话会很棒   任何人都可以表明如何约束   我的模型的id列,所以   当车辆制造时,它的身份   应该始终开始012,依此类推。

通常,主键不应该有意义。