在 Rails 中触发 HTTP 错误

Posted

技术标签:

【中文标题】在 Rails 中触发 HTTP 错误【英文标题】:Trigger a HTTP error in Rails 【发布时间】:2011-01-24 14:25:27 【问题描述】:

我正在尝试在 Rails 中调用 403 HTTP 错误的自定义实例,但我似乎无法弄清楚如何执行此操作...

我有几个用户身份验证角色,基本上,如果一个角色试图浏览到它无权访问的区域,我想显示 403 而不是仅仅重定向用户。

我该怎么做?

【问题讨论】:

我认为应该更改已接受的答案 - 这是一个更好的解决方案,因为它是正确的错误代码以及更好地呈现给最终用户:***.com/questions/9130191/… 【参考方案1】:

只是为了后代:我认为return 403.html 是一个更好的解决方案,因为它会生成一个标准页面,就像 404 一样。上面的解决方案只显示给定的文本。而且由于在良好实践中的人只能通过键入或单击 Web 应用程序外部的链接来访问被禁止的页面,因此标准错误页面是可行的方法。

【讨论】:

【参考方案2】:

在您的控制器代码中添加以下行:

render :status => :forbidden, :text => "Forbidden fruit"

http 代码到符号映射请参考this page。

【讨论】:

太棒了!谢谢大家...仅供参考,您在 :forbidden 之后缺少逗号 谢谢,我已经更新了答案,并在 ruby​​ 符号列表中添加了对 http 代码的引用。 代码映射的旧 url 不见了。我将其更新为指向 apidock。 apidock.com/rails/ActionController/Base/… 在较新版本的 Rails 中,:text 需要变为 :plain

以上是关于在 Rails 中触发 HTTP 错误的主要内容,如果未能解决你的问题,请参考以下文章

如何在 select_tag rails 5 中添加数据触发属性

如何在 azure 函数 http 触发器中触发失败,并带有自定义错误响应

Rails 上的 SASS 无效 CSS 错误

jquery验证插件不在rails中显示错误消息

ruby on rails模拟HTTP请求错误发生:end of file reached

Rails 中的自定义错误页面?