Пользовательские страницы ошибок с ThoughtBot High Voltage

Я использую 1.2.2 High Voltage в приложении rails 3.2.2 и не могу заставить мое приложение запускать пользовательский 404, когда страница не найдена - я просто получаю сообщение "Ошибка маршрутизации, нет такого страница: страница ошибки.

routes.rb:

...

match '/signup',  to: 'users#new'

root :to => 'high_voltage/pages#show', :id => 'home'

match '/404', :to => 'errors#not_found'
match '/422', :to => 'errors#server_error'
match '/500', :to => 'errors#server_error'

match '/:id' => 'high_voltage/pages#show', :as => :static, :via => :get

Я также установил следующее в application.rb (я считаю, что это Rails 3.2 способ избавиться от ошибок маршрутизации):

config.exceptions_app = self.routes

Но я все еще получаю страницу ошибки маршрутизации по умолчанию.

Я также попытался использовать это в моем контроллере приложения:

unless config.consider_all_requests_local
        rescue_from Exception, :with => :render_500
        rescue_from ActiveRecord::RecordNotFound, :with => :render_404
        rescue_from ActionController::RoutingError, :with => :render_404
        rescue_from ActionController::UnknownController, :with => :render_404
        rescue_from ActionController::UnknownAction, :with => :render_404
    end

    protected

    def render_500 exception
      logger.error exception.inspect
      render :template => "/errors/server_error.html.haml", :status => 500, :layout => 'application'
    end

    def render_404 exception
      logger.error exception.inspect
      render :template => "/errors/not_found.html.haml", :status => 404, :layout => 'application'
    end

Но это все еще не работает.

Я в тупике! Кто-нибудь может помочь?

1 ответ

Я могу получить пользовательскую страницу 404, работающую с высоким напряжением, со следующими модификациями:

Примечание: если вы проводите локальное тестирование, вам нужно запустить RAILS_ENV=production rails s потому что режим разработки показывает другую страницу ошибки 404.

# config/application.rb
config.exceptions_app = self.routes

# config/routes.rb
get '/404', to: 'errors#not_found'

Тогда нам просто нужно создать ErrorsController и вид для errors/not_found.html.erb

Другие вопросы по тегам