Обработка исключений направляющих

Как я могу отправить сообщения об ошибках, которые происходят в типовом кодексе назад к представлению. Я имею в виду. У меня есть a

begin
       Some code
rescue
       Exception Handling
end

теперь ошибка происходит и в спасении, я хотел бы передать сообщение обратно контроллеру, так, чтобы это было отображено в представлении. Я должен использовать переменную, которая должна содержать много сообщений об ошибках, который происходит в одном запросе, свяжите их и передайте его обратно контроллеру, так, чтобы я мог отобразить его в представлении?. Направляющие уже показывают, что некоторые сообщения об ошибках как поле не могут быть пробелом. Я спрашиваю о других исключениях, который происходит в функциях, которые присутствуют в типовом кодексе.

16
задан felix 27 June 2010 в 19:21
поделиться

3 ответа

Исключения, возникающие при сохранении / создании модели

Я использую обратные вызовы ActiveRecord after_validation, after_validation_on_create и before_save (в зависимости от обстоятельств), чтобы получите дополнительные данные и убедитесь, что все готово к сохранению. Затем, если возникнут проблемы, я сохраняю исключение в error [: base], используя add_to_base . Таким образом, представление будет отображать сообщение об ошибке так же, как и любые другие ошибки проверки.

Помните, что если ваш метод before_save вернет false, сохранение не удастся.

Исключения для других методов модели

Доступны все обычные методы:

  1. Вызывает конкретное исключение, которое перехватывает контроллер.Исключение может включать номер ошибки, который представление преобразует в сообщение об ошибке. Или модель может экспортировать error_num в error_msg hash
  2. . Вернуть код ошибки в качестве возвращаемого параметра метода. Например, если вы хотите также использовать Flash для передачи положительного сообщения, когда что-то работает, вы можете вернуть msg_code. Затем имейте отрицательные коды сообщений для ошибок и положительные коды для различных типов успеха.
  3. Установите переменную экземпляра @error (или что-то еще) для проверки вызывающей стороной.
6
ответ дан 30 November 2019 в 17:38
поделиться

Пример того, что я делаю в собственном коде:

def create
  @letter = Letter.new(params[:id])

  begin
    @letter.do_something_that_could_throw_an_exception
    flash[:notice] = I18n.translate('letter.success_create')
  rescue => e
    logger.error "letter_controller::create => exception #{e.class.name} : #{e.message}"
    flash[:error] = "#{I18n.translate('letter.letter_create_failed')}<br/>Detailed error: #{e.message}"
    ExceptionNotifier.deliver_exception_notification(e, self, request)
    # redirect somewhere sensible?
  end
end

end

Это поможет?

12
ответ дан 30 November 2019 в 17:38
поделиться
begin
       Some code
rescue =>e
       @error= e.message
       Exception Handling
end

в просмотрах

<%= @error %>
7
ответ дан 30 November 2019 в 17:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: