Перенаправление на пустой результат в 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