Ruby on rails 通过rails 3中的查询字符串进行路由?

Ruby on rails 通过rails 3中的查询字符串进行路由?,ruby-on-rails,Ruby On Rails,我想知道您是否可以使用查询字符串将请求路由到特定的控制器 如果一个请求包含一个查询字符串“q=hello”,那么它将被发送到一个特定的控制器 如果它包含“search=hello”,那么它将被发送到另一个控制器 这可能吗 谢谢 这是一种奇怪的做事方式,但这里有一些可能会有所帮助 假设您有这样一条路线: map.connect ':controller/:action/:id' 然后/people/edit/1?gender=male将路由到people控制器上的编辑操作,params[:id]

我想知道您是否可以使用查询字符串将请求路由到特定的控制器

如果一个请求包含一个查询字符串“q=hello”,那么它将被发送到一个特定的控制器

如果它包含“search=hello”,那么它将被发送到另一个控制器

这可能吗


谢谢

这是一种奇怪的做事方式,但这里有一些可能会有所帮助

假设您有这样一条路线:

map.connect ':controller/:action/:id'
然后/people/edit/1?gender=male将路由到people控制器上的编辑操作,params[:id]将为1,params[:gender]将为“male”

所以要回答你的具体问题,据我所知,不,你不能那样做。但是,如果您关心这一点,那么执行您所说的操作将不是非常轻松的,您需要的任何功能都可以通过其他路径轻松完成

例如,在控制器中可以有一个q和一个搜索动作。使用上面的路径,您的示例将是/people/q/hello和/people/search/hello

或者你可以有这样一条路线:

map.connect ':controller/:action'
然后,/people/index?q=hello和/people/index?search=hello可以通过params[]的if语句在代码中进行过滤


重申:没有(据我所知),但无论如何你都不应该这样做。

以下是解决方案,以防有人在搜索时到达此处:


您到底为什么要这样做?很可能这表明您的控制器/模型结构需要重构。