0

我对 Rails 开发相当陌生,请原谅我的天真:)。

我将 Comfortable Mexican Sofa CMS 用于我的 rails 应用程序。目前,我有一个香草安装,没有对文件进行任何更改。我正在尝试完成一些非常通用且功能强大的事情,我认为它只能在控制器中完成才能正确 - 我正在尝试将所有空数据库查询结果重定向到登录页面而不是给出 404 .

理想情况下,我想让它为资源控制器工作,并且只将它应用于show方法。

从外观上看,Comfy::Cms::Site Load调用rescuepage_not_found调用。对我来说,这看起来像内部 404 处理被烘焙到舒适的墨西哥沙发中,这并不理想。有没有办法添加一个before_action或类似于我的主应用程序控制器的东西来完成我正在尝试的事情?提前感谢您的任何帮助:)

4

1 回答 1

1

Sofa 正在使用路由匹配来提供内容。所以它决定当找不到页面时要做什么。覆盖它的最简单方法是:

  • 运行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
于 2014-11-26T02:34:35.840 回答