在Rails中重定向空结果

时间:2014-11-25 17:20:01

标签: ruby-on-rails redirect routing http-status-code-404 comfortable-mexican-sofa

我对Rails开发还不熟悉,请原谅我的天真:)。

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

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

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

1 个答案:

答案 0 :(得分: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