2010-07-21 45 views
3

我想知道是否可以通过查询字符串将请求路由到特定的控制器。通过轨道3中的查询字符串进行路由?

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

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

这是可能的吗?

谢谢!

+0

到底为什么你要这么做?这可能是你的控制器/模型结构需要重构的一个指标。 – 2010-07-22 02:10:31

回答

1

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

假设你有一个路线,像这样:?

map.connect ':controller/:action/:id' 

然后/人/编辑/ 1性别=男性会路线的人控制器上的编辑操作,而params [:ID]将1和params [:gender]将是“男性”。

所以要回答你的具体问题,据我所知,不,你不能这样做。但是要做你说的话不会很RESTful,如果你关心的话,你需要的任何功能都可以用其他路线更容易地完成。

例如,您可以在控制器中执行q和搜索操作。通过上面的路线,你的例子是/ people/q/hello和/ people/search/hello。

或者你可以有这样的路线:

map.connect ':controller/:action' 

然后/人/指数Q =打招呼和/人/索引搜索=你好,可以在代码中通过if语句过滤的资格吗? PARAMS []。

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