Как обработать ошибку маршрутизации в Rails 4 с алхимическим гемом cms?

Итак, в нашем приложении на Rails 4.2 есть гем alchemy_cms, который требует, чтобы его маршруты были смонтированы последними в config/rout.rb.

SampleApp::Application.routes.draw do
  #other routes for the rails app here
  # :
  # :
  mount Alchemy::Engine => '/'
end

Мы получаем маршруты типа "/somehacker/routingurl", которые затем выпадают на обработку в Alchemy::Engine, что приводит к ошибке 500 по умолчанию. Если я хотел сделать пользовательскую ошибку 404, то правильный способ сделать это - создать пользовательскую страницу 404 и заставить Alchemy обработать перенаправление? В противном случае, поскольку документы Alchemy указывают, что это должен быть последний маршрут в config/rout.rb, не будет способа добавить универсальный маршрут для перенаправления на какую-то страницу с ошибкой, которую я предполагаю.

РЕДАКТИРОВАТЬ:

Одна из проблем заключается в том, что есть некоторые маршруты, которые похожи на недопустимый маршрут "somehacker" выше, которые действительно должны быть проанализированы механизмом маршрутизации Алхимии, например, "/en/us", где "en" - допустимая локаль. Вот почему я изначально решил поместить обработку маршрутов в файл маршрутов движка Alchemy.

1 ответ

Если вам трудно настроить и использовать гем Alchemy cms для перенаправления неизвестных маршрутов на пользовательскую страницу, вы можете использовать метод ниже, чтобы реализовать то же самое с небольшой настройкой кода, приведенной ниже:

Rails 4.XXX

1. Первый метод.

(rout.rb)

Вы все еще можете использовать простой get перенаправить все неизвестные маршруты.

  get '*path', to: 'home#index'

Если вы хотите обеспечить маршрутизацию для запросов POST и GET, вы все равно можете использовать match, но Rails хочет, чтобы вы указали метод запроса через via,

  match "*path" => "home#index", via: [:get, :post]  

Помни что routes.rb выполняется последовательно (соответствует первому маршруту, который соответствует предоставленной структуре пути), поэтому поместите подстановочный знак в нижней части совпадений.

Здесь вы можете заменить home#index на любой пользовательский путь, который вы определили в своем приложении, также обратите внимание, что важно сохранить этот код перенаправления только в нижней части route.rb.

2. Вы можете следовать приведенному ниже туториалу по той же проблеме в другом ракурсе, который можно найти.

Пользовательская страница ошибки 404 с Rails 4

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