Evite erros de Double Render em seu aplicativo Rails

Freqüentemente, você acaba em uma situação em que tenta renderizar duas vezes sem saber em seu aplicativo Rails.

Por exemplo :

def some_action
redirect_to action
: "somewhere"
render action
: "there" # raises DoubleRenderError
end

Uma ação pode conter uma única renderização ou um único redirecionamento para. Fazer as duas coisas conforme mostrado no código acima gera a Exceção de renderização dupla (porque ‘redirecionar para’ inturn faz outra solicitação para renderizar a visualização ‘índice’.

Evite ‘redirect_to’ e renderize em uma única ação.

Se você estiver usando ambos com base em alguma condição.

def some_action
redirect_to
(action: "somewhere") if something.nil?
render action
: "there"
end

O código acima executa ambas as instruções e gera a exceção de renderização dupla quando ‘algo é nulo’ Portanto, para evitar o uso, use a função acima como

def some_action
redirect_to
(action: "somewhere") and return if something.nil?
render action
: "there"
end

Usar o retorno no código acima leva ao retorno dessa função e, portanto, evita ‘Erro de renderização dupla’ em seu aplicativo.

É isso aí. Tenha cuidado com a maneira como você renderiza suas visualizações em sua ação do controlador.

Feliz Hacking!

Fonte: Documentação Rails em ActionController :: Classe Base