可以更好地完成Ruby路由重复路由以进行过滤

时间:2014-03-11 12:43:03

标签: ruby-on-rails ruby

我想抓住以下所有组合,因为用户可以选择使用位置,日期,价格,评分,评论,名称进行过滤

目前我要捕获的主要路线如下:

get ':location/dates/:dates/prices/:prices/ratings/:rating/reviews/:reviews/name/:name' => 'controller1#index'

如何让它抓住它的所有选项?

如果您在地址中输入地址,此路线是否会捕获:

www.example.com/ratings/5  ?

为了抓住我必须写的所有可能性:

    get ':location/dates/:dates/prices/:prices/ratings/:rating/reviews/:reviews' => 'controller1#index'
    get ':location/dates/:dates/prices/:prices/ratings/:rating' => 'controller1#index'
    get ':location/dates/:dates/prices/:prices' => 'controller1#index'
    get ':location/dates/:dates' => 'controller1#index'
    get ':location/dates/:dates/prices/:prices/reviews/:reviews/name/:name' => 'controller1#index'
    get ':location/dates/:dates/prices/:prices/ratings/:rating/name/:name' => 'controller1#index'
    get ':location/dates/:dates/prices/:prices/ratings/:rating' => 'controller1#index'

还有更多人为了抓住他们所有人

2 个答案:

答案 0 :(得分:1)

我猜路由不是你需要的。在您的情况下,您有两个不错的选择:

  1. 在“?”之后将过滤器作为参数传递给url (简单方法)

  2. 使用分类范式(艰难的方式)

答案 1 :(得分:0)

查看文档的bound parameters部分。尝试编写类似的内容:

get ':location(/:dates(/:prices(/:rating(/:reviews(/:name')))))'