Как я могу получить доступ к «назначает» после «render: template => ...»? - PullRequest
4 голосов
/ 16 октября 2008

У меня есть метод обработки ошибок в моем ApplicationController:

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

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

В RAILS_ROOT/app/views/errors/not_found.html.erb, у меня есть это:

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

Но @exception всегда nil. Я пробовал debug assigns, но это всегда {}. Не копируются ли назначения при вызове render :template? Если так, как я могу получить их?

Я на краю рельсов.

Ответы [ 2 ]

5 голосов
/ 16 октября 2008

Странно, и я не знаю почему. В качестве альтернативы вы пытались передать исключение как явное локальное?

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

и вид:

<h1>Error 404: Not Found</h1>
<%= debug exception %> <!-- Note no '@' -->
1 голос
/ 16 октября 2008

Из документации API для ActionController :: Base похоже, что вы должны попробовать:

render :template => '/errors/not_found', :status => 404, :locals => {:exception => exception}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...