2010-07-21 6 views
3

Je me demande si vous pouvez acheminer une requête à un contrôleur spécifique avec une chaîne de requête.routage via une chaîne de requête dans les rails 3?

par ex. Si une requête contient une chaîne de requête "q = hello", elle sera envoyée à un contrôleur spécifique.

et s'il contient "search = hello" alors il sera envoyé à un autre contrôleur.

est-ce possible?

merci!

+0

Pourquoi exactement voulez-vous faire? Les chances sont que ceci est un indicateur que votre contrôleur/structure de modèle a besoin de refactoring. –

Répondre

1

C'est une façon étrange de faire les choses, mais voici quelque chose qui pourrait aider.

Supposons que vous ayez une route comme ceci:?

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

Then/personnes/modifier/1 sexe = homme achemineraient à l'action d'édition sur le contrôleur de personnes, et params [: id] serait 1 et params [: gender] serait "male". Pour répondre à votre question, pour autant que je sache, non, vous ne pouvez pas le faire. Mais faire ce que vous dites ne serait pas très RESTful, si vous vous en souciez, et toute fonctionnalité dont vous avez besoin pourrait être fait plus facilement avec d'autres routes. Par exemple, vous pouvez avoir un q et une action de recherche dans votre contrôleur. Avec la route ci-dessus, vos exemples seraient/people/q/hello et/people/search/hello.

Ou vous pourriez avoir une route comme ceci:

map.connect ':controller/:action' 

Et puis/personnes/index q = bonjour et/personnes/index = bonjour pourrait filtrer dans le code par une instruction if pour? params []. Pour réitérer: Non (pour autant que je sache), mais vous ne devriez pas vouloir le faire de toute façon.