3

У меня есть обработчик исключений (зарегистрированный rescue_from), который иногда вызывает ошибки Double Render, поскольку реальное действие уже отображено/перенаправлено до того, как будет выбрано исключение.Rails: Сброс состояния рендеринга/перенаправления

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

ответ

1

Rails использует контроллер # response_body, чтобы решить, был ли запрос уже обработан или перенаправлен. Просто установите response_body в nil, чтобы избежать этой ошибки. Примечание. Вероятно, лучший способ - предотвратить множественное рендеринг или перенаправление на первое место.

См: #render

+0

OK Я постараюсь, чтобы проверить это позже. Кстати, это не очень практично, чтобы предотвратить это, поскольку как перенаправления, так и исключения являются естественными событиями, и это происходит всегда, когда происходят оба этих события. – mahemoff

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