У меня вопрос использования. В Rails 4.1, если вы запускаете метод контроллера и имеете redirect_to или визуализируете в какой-то момент вашего метода, вам по-прежнему разрешено продолжить выполнение в этой точке. Иногда это приводит к AbstractController :: DoubleRenderError, если вы неправильно обрабатываете поток управления. Почему это разрешено в Rails? Кажется, что забавный вариант использования для перенаправления и не остановить выполнение, когда это будет уместно?Почему рендеринг и перенаправление не прекращаются в приложении Rails?
Сообщение полная ошибка приведена ниже:
AbstractController::DoubleRenderError:
Render and/or redirect were called multiple times in this action. Please note that you may only call render OR redirect, and at most once per action. Also note that neither redirect nor render terminate execution of the action, so if you want to exit an action after redirecting, you need to do something like "redirect_to(...) and return".
Как уже упоминалось ниже, спросите Rails Core Team, они единственные, кто может дать авторитетный ответ на это. Пока они не говорят, мы не можем быть уверены. В общем Ruby вы можете нарушить выполнение с помощью 'return' или' throw' (или 'raise', но это для ошибок) и [это используется Sinatra] (http://www.sinatrarb.com/intro.html# Return% 20Values), поэтому он также оказался верным выбором. –