如果请求包含查询字符串,则路由到单独的操作

时间:2014-11-09 07:05:40

标签: ruby-on-rails ruby ajax

我想知道我是否可以设置路由,以便带参数的show route转到另一个方法,并且当它没有参数返回show方法时。

get fruits/:id   fruits#show 

get fruits/id?market=XXX     fruits#market 

我想这样做,因为我想通过ajax重新加载该页面,并且我做一个popstatus来添加该url。以这种方式使用这条路线会很棒

1 个答案:

答案 0 :(得分:5)

使用路线约束。

get 'fruits/:id', to: 'fruits#market', \ 
                   constraints: ->(request) { request.query_parameters.present? }

get 'fruits/:id', to: 'fruits#show'

您还可以检查是否存在特定参数,例如market

get 'fruits/:id', to: 'fruits#market', \ 
          constraints: ->(request) { request.query_parameters[:market].present? }