¿Cómo accedo a & # 8220; asigna & # 8221; después de & # 8220; render: template = > & # 8230; & # 8221 ;?
-
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.
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