【问题标题】:Redirect on empty result in Rails在 Rails 中重定向空结果
【发布时间】:2014-11-25 17:20:00
【问题描述】:

我对 Rails 开发还很陌生,请原谅我的幼稚:)。

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

理想情况下,我希望将其用于资源控制器,并且仅将其应用于 show 方法。

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

【问题讨论】:

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


    【解决方案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
    

    【讨论】:

    • 这实际上正是我所做的哈哈。我似乎无法让 rescue_from 真正从 ActionCrontroller 工作!即使与Exception 进行模式匹配,我仍然无法捕捉到它!我想知道沙发是否在模式匹配阶段以某种方式划定了范围。
    猜你喜欢
    • 1970-01-01
    • 2016-09-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-22
    • 2013-09-12
    • 1970-01-01
    相关资源
    最近更新 更多