Rails 3.0.15 Пользовательские 404 и 500

Я видел много вопросов о пользовательских представлениях ошибок для Rails, но еще не нашел решения своей проблемы!

Что касается 404, прямо сейчас в моем файле route.rb внизу есть все, что нужно для перенаправления неизвестных именованных маршрутов, например. "webroot/adsfsdfasdf/", но он не работает из-за недопустимого идентификатора, например, "webroot/people/x1df1231" - ActiveRecord::RecordNotFound (не удалось найти человека с идентификатором = x1df1231)

За 500 пока решения не нашел.

В данный момент я не могу обновить Rails,


person Sean Xiao    schedule 02.11.2012    source источник


Ответы (2)


Если вы хотите сделать это в продакшене, используя либо apache, либо nginx, вы можете установить его в файле конфигурации сервера, а не в rails.

person Aaron Perley    schedule 03.11.2012

Лучшее решение, которое я нашел, это использовать «round_filter»

поверх application_controller:

around_filter :handle_errors

а потом ниже

def handle_errors
    yield
    rescue => e
        logger.debug "\n ====== ERROR ====== \n\n #{e.message} \n\n #{e.annoted_source_code} \n\n #{e.backtrace} \n\n ================= \n\n"
        if e.is_a?(ActiveRecord::RecordNotFound)
            render '/errors/e404'
        else
            render '/errors/e500'
        end
end

Где «/errors/e404» — это шаблон, например, views/errors/e404.html.haml Никаких изменений в route.rb. Исходный универсальный маршрут иногда нарушает работу приложения.

person Sean Xiao    schedule 02.11.2012