Рельсы условных маршрутов - PullRequest
0 голосов
/ 30 марта 2009

Я пытаюсь настроить мастер создания пользователей, чтобы пользователь мог перейти только на страницу, соответствующую текущему шагу в мастере, в котором находится пользователь.

Я уже разобрался с функциями конечного автомата. Текущее состояние хранится в БД. Это не проблема

Проблема в том, как перенаправить пользователя на нужную страницу.

Сначала я попробовал фильтр before, но это привело к циклу перенаправления. Решение для этого было грязным.

Следующее, что я попробовал, это использовать redirect_to для отправки запроса к действию, которое затем перенаправляет на соответствующую страницу. Это привело к DoubleRenderError, потому что я перенаправляю дважды. Я думал, что redirect_to - это новый http-запрос, но, похоже, это не так.

Теперь мне интересно, можно ли напрямую настроить такую ​​функцию на маршрутах? Мне нужно иметь доступ к БД, чтобы получить текущее состояние. Я понятия не имею, как это делается или вообще возможно

Есть идеи?

Спасибо

Ответы [ 3 ]

2 голосов
/ 30 марта 2009

Я не уверен, полностью ли понимаю ваш вопрос.

Однако причина, по которой вы получили ошибку двойного рендеринга, заключается в том, что после простого кода ruirect redirect_to код продолжает выполняться. В какой-то момент этот код попытался снова отобразить данные (отсюда и DoubleRenderError).

Вы можете использовать:

redirect_to [...] and return false

Это предотвратит выполнение любого последующего кода и, следовательно, предотвратит ошибку DoubleRenderError.

Удачи!

0 голосов
/ 09 апреля 2012

я думаю, этот подход из :constraints => определения может быть именно тем, что вы искали

0 голосов
/ 05 августа 2010

Я думаю, что эта проблема та же, что и у меня вчера (я на Rails 2.1), мое решение можно найти здесь, на моем блоге, это действительно просто!

...