自定义错误处理和康康舞

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(使用前将#替换为@)

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

  • 获取设备中的当前用户ID

    如何使用设备获取控制器中的当前用户 ID 在我的控制器中我有这样的东西 def index me current user c User find me sheets c time sheets end 我收到一条错误消息 无法找到没有 I
  • Rails 注释分段错误

    有一些问题围绕着这个问题 但没有什么真正能满足我的需求 After I bundle install下面列出了我的 Gemfile 我运行annotate并出现以下错误 Users nickcoelius rvm gems ruby 1 8
  • Rails:CSRF 令牌不工作但已设置

    我在 Heroku 上有我的 Rails 3 应用程序 当我发送银行信息时 我得到 WARNING Can t verify CSRF token authenticity但我的 CSRF 令牌已设置 https gist github c
  • 使用 Ajax 在输入时提交 Textarea,然后渲染部分内容而不刷新整个页面

    目前我正在尝试通过 JS 和 Ajax 在没有提交按钮的情况下发表评论 并且它有效 问题是当帖子提交时 页面重新加载到 post id comment页面 我希望它呈现部分内容 而不是刷新整个页面或将我带到不同的页面 我对 JS 不熟悉 任
  • 创建一个简单的 Rails 3 文本助手 Gem [重复]

    这个问题在这里已经有答案了 我一直在开发我的第一个 Rails 3 插件 以打包一个我喜欢在ApplicationHelper我所有的应用程序 你可以看到整个代码在 Github 上 https github com burlesona s
  • 在 ec2 上托管 Rails

    我想将 Rails 部署到亚马逊 ec2 上 我看过 poolparty 和 ec2onrails 但似乎都不再维护了 人们用什么来做到这一点 都是自制的木偶和卡皮斯特拉诺 还是有一个项目可以让我继续下去 我可以推荐两个项目 如果您有一个
  • 如何在 Rails 测试中测试 params 哈希?

    以下内容会生成错误 未定义的局部变量或方法 params assert equal params recipient id users one id 如何测试参数哈希 另外 你如何测试assert redirect当存在参数时 参数附加到
  • Rails 4:资产未在生产中加载

    我正在尝试将我的应用程序投入生产 但图像和 CSS 资源路径不起作用 这是我目前正在做的事情 图像资源位于 app assets images image jpg 样式表位于 app assets stylesheets style css
  • 为什么我不能将左大括号放在下一行?

    当我尝试编译以下代码时遇到奇怪的错误 package main import fmt fmt func main var arr 3 int for i 0 i lt 3 i fmt Printf d arr i 错误如下 unexpect
  • 多重要求和允许强参数rails 4

    在下面的情况下 我尝试使用强参数 我想要求email address password并允许remember me fields 但像下面这样使用它只允许最后一行在方法示例中 在下面的情况下 它只需要params permit rememb
  • 即使在急切加载之后,belongs_to 关联也会单独加载

    我有以下关联 class Picture lt ActiveRecord Base belongs to user end class User lt ActiveRecord Base has many pictures end 在我的
  • Asp.net mvc 重写基本控制器中的 OnException 不断传播到 Application_Error

    我试图返回一个视图 而不是根据我的应用程序可能发生的某些错误向用户发出重定向 我想处理错误 将它们记录在我的基本控制器中 我不希望错误传播到我的Global asax Application Error 方法 因为我希望此方法处理我的应用程
  • 获取嵌套参数

    我有一个带有嵌套参数的表单 在下面的示例中 如何获取控制器中的 amount whole 值 Parameters utf8 gt authenticity token gt KCmBI6RLh0LdUsM2r5H1vhNykS1IXecF
  • Rails 4 应用程序...在开发环境中,除非刷新页面,否则 javascript 不会触发

    所以我的第一个rails4应用程序遇到了一个奇怪的问题 除非我重新加载页面 否则我的页面javascript不会触发 对于我的 asset pipeline JS 和 content for JS 来说都是如此 在我的 assets jav
  • Windows 7 x64 上的 Ruby on Rails SQLite 问题

    当我尝试做的时候db create使用 Windows 7 x64 在具有此数据库配置的 sqlite 数据库上 development adapter sqlite3 database db development sqlite3 tim
  • JavaScript 错误处理的最佳实践是什么?

    我希望开始让我的 JavaScript 更加防错 并且我找到了大量有关使用的文档try catch finally and throw 但我没有从专家那里找到大量关于何时何地抛出错误的建议 每段代码都应该包含在 try catch 中吗 还
  • Rails/Ruby 合并两个具有相同键、不同值的哈希值

    我有两个想要合并的哈希值 它们看起来像这样 Hello gt 3 Hi gt 43 Hola gt 43 第二个哈希看起来像 Hello gt 4 Hi gt 2 Bonjour gt 2 我想合并这两个哈希数组 使结果看起来像 Hello
  • 如何处理 AJAX 请求中的会话超时

    我相信你们都熟悉使用 AJAX 的投票系统 嗯 看那边 我有类似的东西 当你投票赞成或反对时 它使用 AJAX 从 votes php 请求新值 问题是我正在使用会话来获取用户 ID 因此一个人只能投票一次 如果他们在页面上坐了一个小时然后
  • Shoulda/RSpec 匹配器 - 条件验证

    在我的代码中 我使用 Shoulda 匹配器进行了以下验证 效果很好 it should validate presence of name 在我的模型中 我已将条件添加到验证中 validates presence of name if
  • Rails 资源单数还是复数?

    我有一条搜索路线 我想将其设为单数 但是当我指定单数路线时 它仍然会生成复数控制器路线 这是应该的样子吗 resource search Gives me search POST search format action gt create

随机推荐

  • 通过代码在 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