【发布时间】:2015-06-12 15:02:44
【问题描述】:
我正在尝试创建一个具有可选参数以及不同顺序的 Rails 路由。
这个问题描述了一个类似的问题:Routes with multiple, optional, and pretty parameters
我正在尝试创建其中包含地图过滤器的路线,例如参数,但没有参数 URL 样式。我们的想法是让它们看起来像
/search/country/:country/
/search/country/:country/state/:state/
/search/country/:country/state/:state/loc/:lat/:long/
但你也应该能够搜索
/search/state/:state/
/search/state/:state/country/:country/
/search/loc/:lat/:long/
我知道我可以使用路由通配符编写复杂的正则表达式语句 - 但是我想知道是否有办法让多个可选路由参数具有未指定的顺序,例如
/search/( (/country/:country)(/state/:state)(/loc/:lat/:long) )
谢谢!
【问题讨论】:
-
我认为您已经有了解决问题的最佳方法,即正则表达式
-
另一种方法,也许不是最好的方法,就是在你的
routes.rb中包含多个条目 -
我使用 Regex 来解决这个问题,但我仍然很好奇 Rails5 协议是否希望支持多个可选参数。您应该能够指定分隔符并在显式和未排序之间进行选择。
-
@RPinel 是的,这是一个解决方案,但它并不可行,因为 N 个参数对应于 N 个参数!路由文档中的路由数量。在那种情况下,Regex 将是一个明显的选择!
标签: ruby-on-rails routing