2010-07-21 4 views
3

Интересно, можете ли вы перенаправить запрос к определенному контроллеру с строкой запроса.маршрутизация через строку запроса в рельсах 3?

например. если запрос содержит запрос «q = привет», он будет отправлен на конкретный контроллер.

и если он содержит «поиск = привет», он будет отправлен другому контроллеру.

Возможно ли это?

спасибо!

+0

Почему именно вы хотите сделать это? Скорее всего, это индикатор того, что ваша структура контроллера/модели нуждается в рефакторинге. –

ответ

1

Это странный способ сделать что-то, но вот что-то может помочь.

Предположим, у вас есть маршрут как так:

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

Тогда/люди/редактировать/1 пол = мужчина будет маршрутизировать к действию редактирования на контроллере людей, и PARAMS [: ID] будет 1 и params [: gender] будут «мужчинами».

Чтобы ответить на ваш конкретный вопрос, насколько я знаю, нет, вы не можете этого сделать. Но делать то, что вы говорите, не будет очень RESTful, если вам это все равно, и любая функциональность, которая вам нужна, может быть проще с другими маршрутами.

Например, у вас может быть q и действие поиска в вашем контроллере. С приведенным выше маршрутом вашими примерами будут/people/q/hello и/people/search/hello.

Или вы могли бы иметь маршрут, как это:

map.connect ':controller/:action' 

И тогда/люди/индекс д = привет и/люди/индекс поиска = привет может быть отфильтрован в коде, если заявление для? Титулы [].

Повторить: Нет (насколько я знаю), но вы все равно не хотите этого делать.

Смежные вопросы