Перенаправление на пустой результат в Rails

Я довольно новичок в разработке Rails, пожалуйста, прости мою наивность:).

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

В идеале я хотел бы, чтобы это работало для контроллера ресурсов, и применил это только к show метод.

Судя по всему, Comfy::Cms::Site Load звонки rescue когда page_not_found называется. Для меня это выглядит так, будто внутренняя ручка 404 запечена в удобном мексиканском диване, что не идеально. Есть ли способ добавить before_actionили что-то похожее на мой основной контроллер приложений, чтобы выполнить то, что я пытаюсь? Спасибо за любую помощь заранее:)

1 ответ

Диван использует маршрутизацию, чтобы подать контент. Поэтому он решает, что делать, когда страница не найдена. Самый простой способ переопределить это:

  • бежать rails g comfy:cms:controllers, (доступно с 1.12.3)
  • находить app/comfy/cms/controllers/content_controller.rb (удалите остальные файлы, так как они вам не нужны)
  • менять page_not_found способ перенаправить или делать все, что вы хотите.

Надеюсь это поможет.

Редактировать:

В качестве альтернативы вы можете спастись от ошибки RoutingError (это то, что выдает CMS, если страница не найдена, а страницы 404 нет)

# in your application_controller.rb
rescue_from ActionController::RoutingError, :with => :your_method_with_redirect
Другие вопросы по тегам