¿Cómo accedo a & # 8220; asigna & # 8221; después de & # 8220; render: template = > & # 8230; & # 8221 ;?

StackOverflow https://stackoverflow.com/questions/209753

  •  03-07-2019
  •  | 
  •  

Pregunta

Tengo un método de manejo de errores en mi ApplicationController:

rescue_from ActiveRecord::RecordNotFound, :with => :not_found

def not_found(exception)
  @exception = exception
  render :template => '/errors/not_found', :status => 404
end

En RAILS_ROOT / app / views / errors / not_found.html.erb , tengo esto:

<h1>Error 404: Not Found</h1>
<%= debug @exception %>

Pero @exception siempre está nil allí. Intenté debug assigns , pero eso siempre es {} . ¿No se copian las asignaciones al llamar a render: template ? Si es así, ¿cómo puedo obtenerlos?

Estoy en los rieles de borde.

¿Fue útil?

Solución

Eso es extraño, y no sé por qué. Como alternativa, ¿ha intentado pasar la excepción como un local explícito?

def not_found(exception)
  render :template => '/errors/not_found', 
         :status   => 404, 
         :locals   => {:exception => exception}
end

y la vista:

<h1>Error 404: Not Found</h1>
<%= debug exception %> <!-- Note no '@' -->

Otros consejos

De la documentación de la API para ActionController :: Base se ve como deberías probar:

render :template => '/errors/not_found', :status => 404, :locals => {:exception => exception}
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top