Question

J'ai une méthode de traitement des erreurs dans mon ApplicationController:

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

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

Dans RAILS_ROOT / app / vues / erreurs / not_found.html.erb , j'ai ceci:

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

Mais @exception est toujours nil . J'ai essayé debug assigns , mais c'est toujours {} . Les assignations ne sont-elles pas copiées lors de l'appel de render: template ? Si oui, comment puis-je les obtenir?

Je suis sur les rails de bord.

Était-ce utile?

La solution

C'est étrange et je ne sais pas pourquoi. Au lieu de cela, avez-vous essayé de passer l'exception en tant que local explicite?

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

et la vue:

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

Autres conseils

Extrait de la documentation de l'API pour ActionController :: Base comme vous devriez essayer:

render :template => '/errors/not_found', :status => 404, :locals => {:exception => exception}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top