自定义错误处理和康康舞

2024-04-03

我正在尝试实现自定义错误处理以及使用 CanCan。当用户到达不允许访问的区域时,会引发 CanCan::AccessDenied 错误,并且应将其发送到根 url。相反,“rescue_from Exception”捕获 CanCan::AccessDenied 并且用户收到 500 错误。我究竟做错了什么?

#application_controller.rb
rescue_from CanCan::AccessDenied do |exception|
  redirect_to main_app.root_url, :alert => exception.message
end

rescue_from Exception,
  :with => :render_error
rescue_from Mongoid::Errors::DocumentNotFound,
  :with => :render_not_found
rescue_from ActionController::RoutingError,
  :with => :render_not_found
rescue_from ActionController::UnknownController,
  :with => :render_not_found
rescue_from AbstractController::ActionNotFound,
  :with => :render_not_found


def render_not_found(exception)
  render :template => "/errors/404.html",
       :layout => 'errors.html',
       :status => 404
end

def render_error(exception)
  render :template => "/errors/500.html",
       :layout => 'errors.html',
       :status => 500
end

您是否尝试从异常/错误中重新排序rescue_,首先更通用,稍后更具体,例如

rescue_from StandardError,
  :with => :render_error
rescue_from Mongoid::Errors::DocumentNotFound,
  :with => :render_not_found
rescue_from ActionController::RoutingError,
  :with => :render_not_found
rescue_from ActionController::UnknownController,
  :with => :render_not_found
rescue_from AbstractController::ActionNotFound,
  :with => :render_not_found
rescue_from CanCan::AccessDenied do |exception|
  redirect_to main_app.root_url, :alert => exception.message
end

注意:您可能想用 StandardError 替换通用异常。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

自定义错误处理和康康舞 的相关文章

  • Rails 4 在 capistrano 部署后未检测到应用程序

    我目前正在尝试使用 Capistrano 3 部署 Rails 4 应用程序 一切都很顺利 但我遇到了一个问题 是的 我无法在我的应用程序中运行任何 Rails 命令 这是我相关的 capistrano 插件 gem capistrano
  • -bash:pg_dump:找不到命令

    我正在尝试在本地为我的 Rails 应用程序提取一个生产数据库 我本地的 postgres 版本太低 所以我需要从 9 4 1 更新到 Postgresql 9 6 5 我通过 Homebrew 安装了 Postgres 9 6 6 如下所
  • Spring @ControllerAdvice 与 ErrorController

    在我的 REST 服务应用程序中 我计划创建一个 ControllerAdvice捕获控制器抛出的异常并返回的类ResponseEntity根据错误类型的对象 但我已经有一个 RestController类实现ErrorController
  • 程序“gem”可以在以下软件包中找到

    我正在 Virtual Box Ubuntu 13 10 上安装 Ruby on Rails 以下是步骤 ruby v gt 程序 ruby 可以在以下软件包中找到 尝试 sudo apt get install 来源 我的帐户 gt 好的
  • Rails 3.0.0.beta 和 Facebooker:还有其他人看到以下内容吗?

    我的 Rails 服务器在安装 facebooker 插件后似乎崩溃了 任何有关解决此问题的建议都会很棒 我正在使用 Rails 3 0 0 beta 和 facebooker 以下是我看到的步骤和错误 rails v Rails 3 0
  • 在 debian Squeeze 上安装 RoR

    有什么方法可以在我的 debian squeeze 上安装 Ruby 1 9 2 或 1 8 7 Rails 3 吗 您可能不想在生产计算机上使用 RVM 它的 PATH 魔力会在不明显的地方 例如 cron 作业 被破坏 然后你就会陷入困
  • 回形针如何更改基本名称(文件名)?

    我正在尝试更改照片的基本名称 文件名 在我的模型中我有 attr accessor image url basename has attached file image styles gt original gt 300x250 gt pn
  • 如何使用 ruby​​ 的循环和 haml 创建表?

    我正在尝试制作一个如下所示的 html 表 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 我的数据结构是这样的 f ary 1 250 这是我的哈姆尔代码 table border gt 1 tbody tr cnt 0 f
  • Rails 中的并行方法

    我的 Rails Web 应用程序有数十种方法 从调用 API 到处理查询结果 这些方法具有以下结构 def method one batch query API process data end def method nth batch
  • Rails:渲染不起作用,仍然出现“模板丢失”

    我目前正在学习 Rails 指南 我完成了这些步骤 但仍然遇到错误 我的 Ruby 版本是ruby 2 1 1p76Rails 版本是4 0 4 按照指南的指示 我创建了一个Article Controller class Articles
  • Rails:关于产量

    我在a中看到了一些代码导轨 v2 3 app In layout car general html erb 这个视图是由 cars controller 中的方法调用的 我看到了代码 var some car new Object 有两个问
  • 错误“未初始化常量 AWS (NameError)”

    它说 AWS 未初始化 我正在使用 aws sdk core gem 我尝试使用 aws sdk gem 代替 问题仍然存在 这是initializers aws rb 文件 AWS config access key id gt ENV
  • Rails 3 - “无法解析 Yaml”

    我不知道我做错了什么 我尝试运行 rails c 但它只是给了我一个错误 10 分钟前它还在工作 C Ruby192 lib ruby 1 9 1 psych rb 148 in parse couldn t parse YAML at l
  • 捕获另一个进程未处理的异常

    我想知道我是否可以捕获我开始使用 Process Start 的另一个进程抛出的未处理的异常 我知道我可以用这个捕获标准错误link http social msdn microsoft com Forums en US csharpgen
  • 如何创建与 ActiveResource 对象的 ActiveRecord 关系?

    假设我正在为一家已经拥有 People 应用程序的出版公司编写一个图书馆应用程序 所以在我的图书馆应用程序中我有 class Person lt ActiveResource Base self site http api people m
  • Twitter Bootstrap 中下拉链接的模态

    我正在尝试从下拉菜单中的链接进行模式启动 该模式似乎已启动 网站变为灰色 但看不到 来自不在下拉列表中的常规链接的模态工作得很好 我对 jquery 进行了愚弄 但由于我是 jquery 的新手 所以没有任何结果 这是我的网站代码
  • Rails 3 Mechanize - SocketError:getaddrinfo:主机或名称未知

    我正在使用 mechanize 但出现此错误 有人可以帮帮我吗 我已将元刷新设置为 true 错误日志 SocketError getaddrinfo Host or name not known form C Ruby192 lib ru
  • 回滚后是否应该删除迁移

    我对 ruby 和 Rails 相当陌生 刚刚开始了解迁移 我的问题是回滚后删除迁移的最佳实践或正确时间是什么 到目前为止 我读到的内容是回滚后是否删除迁移的观点问题 但是在团队中工作时删除迁移是否有任何重大影响 以及保留迁移文件相对于删除
  • 如何在服务调用后检查 rspec 中的数组更改?

    目标很简单 例如我们有一个数组 name ghost state rejected name donkey state rejected 运行服务调用后UpdateAllUsers 这会将所有用户更改为 accepted name ghos
  • 为什么 Rails 中的区域设置充当全局(使用 Thin 时)?

    我刚刚意识到在控制器中设置区域设置的推荐 Rails 方法 before filter set locale def set locale I18n locale params locale I18n default locale end

随机推荐

  • 通过代码在 Outlook 中发送/接收

    如果我使用 Excel VBA 创建 Outlook 2010 对象 Sub CreateOL On Error Resume Next Set myOlApp GetObject Outlook Application If Err Nu
  • 由于 .getContext() 未实现,单元测试引发错误

    我正在使用 Jest 为使用画布元素的组件编写测试 当我运行如下所示的测试时 我不断收到错误 Error Not implemented HTMLCanvasElement prototype getContext without inst
  • 将 System.out.println 记录到单个应用程序的日志文件

    我们在 tomcat 上有多个应用程序 它们使用 System out println 语句记录到 catalina out 有一个应用程序会创建大量日志语句 因此我想将这些应用程序输出记录到单独的日志文件中 我创建了一个 log4j xm
  • GridLayout 列宽

    我的目录中有 2 列GridLayout 我想要做的是让这些列各自占据屏幕宽度的一半 然后让它的子内容填充它们自己的单元格宽度 高度 我尝试让孩子们fill parent但这只会导致第一个占据整个布局 而且 GridLayout 似乎不支持
  • Ruby 类方法与特征类中的方法

    类方法和该类的特征类 或元类 中的方法只是定义一件事的两种方法吗 否则的话 有什么区别呢 class X class method def self a a end eigenclass method class lt lt self de
  • 我应该使用新的 HTML5 语义元素吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我正在升级我的网站 这涉及到使用新的 HTML5 语义元素的决定
  • 使用PHP和Javascript通过CORS实现站点之间的跨域通信

    经过几天的网络浏览并尝试了所有可能的方法后 我开始意识到我的主机服务器存在问题 它被我的主机服务器禁用 所以 我想把我的代码发布到 Stackoverflow 上 这样 SO 上的其他人就不会像我一样浪费时间了 该代码片段在 IE Safa
  • linux下获取硬盘剩余空间

    在 bash 脚本中 我需要获取总磁盘大小和整个磁盘当前使用的大小 我知道我可以使用以下命令获取总磁盘大小 而无需成为 root 用户 cat sys block sda size 该命令将输出设备 SDA 上的块数 将其乘以 512 您将
  • iOS——是否可以强制 UILabel 子类对象成为第一响应者?

    有什么办法可以做到这一点吗 我尝试将以下内容放入子类中 BOOL canBecomeFirstResponder return YES 但是当我向对象发送成为FirstResponder消息时 它仍然没有成为第一响应者 对的 这是可能的 你
  • 使用初始值设定项列表创建单项向量

    我有一个函数func这是超载采取任一std vector
  • MaterialDatePicker 仅选择 2 个日期之间的日期

    如何向 MaterialDatePicker 添加约束以强制用户仅选择 2 个日期之间的日期 val constraintBuilder CalendarConstraints Builder val materialRangeBuilde
  • 命令 test -x 在 ubuntu 中做什么?

    什么是test x从 etc cron daily logrotate 做什么 test x usr sbin logrotate exit 0 usr sbin logrotate etc logrotate conf 它是否测试是否已经
  • 如何加快 Julia 脚本的启动时间

    我编写了一个脚本来在 Julia 中绘制每日数据 但我发现它运行缓慢 似乎没有理想的方法来加速它 例如 foo jl bin bash exec julia O0 compile min BASH SOURCE 0 using Unicod
  • 异步 bash 脚本

    我见过一些例子 但无法将它们应用于我的情况 我有一个调用长时间运行的命令的脚本 但我想定期 例如每 1 秒 获取该调用的状态 例如 bin bash curl localhost 9200 my index forcemerge max n
  • FromBody不绑定字符串参数

    我有一个类似的问题ASP NET MVC 4 RC Web API 参数绑定问题 https stackoverflow com questions 11158617 asp net mvc 4 rc web api parameter b
  • 在 Windows 上从 C++ 调用 R 函数

    我正在尝试在 Windows 上从 C 调用 R 函数 我正在使用 MinGW 来编译程序 但它在编译时抛出错误 代码 取自Dirk 和编译错误如下 include
  • Flutter:热重载后应用程序不断返回初始路线

    我刚刚按照迁移指南将 FireBase 插件升级到最新版本https firebase flutter dev docs migration https firebase flutter dev docs migration并开始注意到 每
  • SublimeREPL:Python - 运行当前文件

    当前在 SublimeText 中打开 python 脚本 我选择 工具 gt SublimeREPL gt Python gt 运行当前文件 Sublime 在新的目录中执行脚本交互的 REPL python 窗口 该窗口仍在 Subli
  • java和php可以集成吗

    我需要将一个java类集成到php程序中 这可能吗 如果可以 请解释一下 我认为这是可能的 检查一下 PHP 到 Java 的桥梁 http www projectzero org sMash 1 1 x docs zero devguid
  • 自定义错误处理和康康舞

    我正在尝试实现自定义错误处理以及使用 CanCan 当用户到达不允许访问的区域时 会引发 CanCan AccessDenied 错误 并且应将其发送到根 url 相反 rescue from Exception 捕获 CanCan Acc