Как мне получить доступ к «назначениям» после «render :template => …»?

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

  •  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}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top