Как мне получить доступ к «назначениям» после «render :template => …»?
-
03-07-2019 - |
Вопрос
У меня есть метод обработки ошибок в моем 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
?Если да, то как я могу их получить?
Я на грани Rails.
Решение
Это странно, и я не знаю почему.В качестве альтернативы, пробовали ли вы передать исключение как явное локальное исключение?
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 '@' -->
Другие советы
Из документации API для Экшнконтроллер::База похоже, вам стоит попробовать:
render :template => '/errors/not_found', :status => 404, :locals => {:exception => exception}
Не связан с StackOverflow