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

Ruby on rails 如果请求包含查询字符串,则路由到单独的操作,ruby-on-rails,ruby,ajax,Ruby On Rails,Ruby,Ajax,我想知道是否可以设置路由,以便带参数的show route转到另一个方法,当它没有参数时,返回show方法 get fruits/:id fruits#show 及 我之所以要这样做,是因为我想通过ajax重新加载该页面,并通过popstatus添加该url。如果能以这种方式使用路由,那就太好了使用路由约束 get 'fruits/:id', to: 'fruits#market', \ constraints: ->(request) {

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

get fruits/:id   fruits#show 


我之所以要这样做,是因为我想通过ajax重新加载该页面,并通过popstatus添加该url。如果能以这种方式使用路由,那就太好了

使用路由约束

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

get 'fruits/:id', to: 'fruits#show'
您还可以检查是否存在特定参数,例如
市场

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

我认为那不是个好主意。如果参数存在,您应该有不同的路由或重定向到不同的路由。这只是一个想法,不知道为什么你需要这个,不确定你的应用程序是如何建立的,但是考虑使用嵌套的资源吗?如果它们相互关联,那么最好有市场/:id/水果/:id
get 'fruits/:id', to: 'fruits#market', \ 
          constraints: ->(request) { request.query_parameters[:market].present? }