Javascript 主干路由和过滤-更好的方法

Javascript 主干路由和过滤-更好的方法,javascript,backbone.js,Javascript,Backbone.js,我正在创建一个应用程序,它接收一组数据并显示在页面上 因为我想按地点、日期、价格和评级进行筛选,所以我必须创建下一条路线: ":location": "func1" ":location/dates/:dates": "func2" ":location/dates/:dates/prices/:prices": "func3" ":location/dates/:dates/prices/:prices/ratings/:ratings": "func4" ":location/dates/:

我正在创建一个应用程序,它接收一组数据并显示在页面上

因为我想按地点、日期、价格和评级进行筛选,所以我必须创建下一条路线:

":location": "func1"
":location/dates/:dates": "func2"
":location/dates/:dates/prices/:prices": "func3"
":location/dates/:dates/prices/:prices/ratings/:ratings": "func4"
":location/dates/:dates/ratings/:ratings": "func5"
":location/prices/:prices": "func6"
":location/prices/:prices/ratings/:ratings": "func7"
":location/ratings/:ratings": "func8"
你可以看到这里有重复的,我希望避免它,并能够捕获url中的所有过滤器


如何才能以更好的方式实现,这样我就不需要根据所有可能的情况复制路由?

您可以使用可选参数将其简化为一条路由:

":location(/dates/:dates)(/prices/:prices)(/ratings/:ratings)": "func1"

我在后端使用Ruby,是否也需要在routes.rb上设置此选项?我没有使用Ruby,因此我无法帮助您,但这取决于您的体系结构。如果您只想在客户端过滤集合,就不需要在第一次加载集合数据时调用Ruby后端。谢谢您的回答。如果我希望:位置也是可选的,我如何实现它?用括号将其括起来,但是使用
“*splat:“func1”
可能会更好。