ruby-on-rails - 如何防止 Rails 在找不到带有 'id' = 的文章时显示个人信息

标签 ruby-on-rails ruby

我阅读了本指南的大部分内容 http://guides.rubyonrails.org/getting_started.html很久以前。

我设置了一个文章 Controller ,当我创建一篇新文章时,会生成一个新的数字,例如

https://www.zzz.com/articles/1
https://www.zzz.com/articles/2
https://www.zzz.com/articles/3

我刚刚注意到,如果我输入一个不存在的数字,我会收到一条错误消息

 ActiveRecord::RecordNotFound in ArticlesController#show 

然后它显示我不希望人们看到的信息,例如

Rails.root: /home/myname/myapp

如何只显示 404 错误?

我试过将这样的东西添加到应用程序 Controller ,但它没有帮助:

class ApplicationController < ActionController::Base
  rescue_from ActiveRecord::RecordNotFound, :with => :render_404
  # Render 404 page when record not found
    def render_404      
       render :file => "#{RAILS_ROOT}/public/404.html", :status => 404
    end
end

我目前在开发模式而不是生产模式下运行。这重要吗?

最佳答案

是的,以开发模式而不是生产模式运行很重要。因为在 development 中,应用程序 hat 其他默认值和 try 被优化以帮助开发人员,例如通过显示错误消息。

production 中的默认值是不同的,并且针对在生产服务器上运行的应用程序进行了优化:应用程序将运行得更快,并且不会向浏览器发送错误消息。

如果您想测试该行为,您可以将 config/environments/development.rb 中的 consider_all_requests_local 设置为 false(参见Rails docs about configuration)。这将禁止向浏览器发送调试信息。

但是,我建议在生产环境中的服务器上运行应用程序。

关于ruby-on-rails - 如何防止 Rails 在找不到带有 'id' = 的文章时显示个人信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46387302/

相关文章:

ruby-on-rails - 在公用文件夹外用 Rails 打开一个 .pdf 文件

html - 有没有办法在 text_field_tag 上设置必需的属性?

ruby-on-rails - iconv 将来会被弃用,请改用 String#encode

ruby-on-rails - 将文件加载到 Rails 控制台,并可以访问此文件中定义的变量

ruby-on-rails - rails 3 : use contents of an array as variables in a where method

ruby - 从 Ruby 中的图像集合创建拼贴画

ruby - MiniTest 和非拉丁测试描述

ruby-on-rails - rails console - 在表格中显示事件记录结果

ruby - 在 Ubuntu 上安装 Metasploit 框架的问题

ruby-on-rails - 是否可以从事件记录父对象的错误中访问子对象?