Ruby on rails 如何防止Rails在无法';找不到带有';id'=

Ruby on rails 如何防止Rails在无法';找不到带有';id'=,ruby-on-rails,ruby,Ruby On Rails,Ruby,很久以前,我浏览了这本指南的大部分内容 我设置了一个文章控制器,当我创建一篇新文章时,会生成一个新的编号,如 https://www.zzz.com/articles/1 https://www.zzz.com/articles/2 https://www.zzz.com/articles/3 我只是注意到如果我输入一个不存在的数字,我会得到一个错误 ActiveRecord::RecordNotFound in ArticlesController#show 然后它会显示我不想让人们看

很久以前,我浏览了这本指南的大部分内容

我设置了一个文章控制器,当我创建一篇新文章时,会生成一个新的编号,如

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错误

我曾尝试将类似的内容添加到应用程序控制器,但没有任何帮助:

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
class ApplicationController:render\u 404
#未找到记录时呈现404页
def渲染器404
render:file=>“#{RAILS_ROOT}/public/404.html”,:status=>404
结束
结束

我目前运行的是开发模式,而不是生产模式。这有关系吗?

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

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

如果您想测试该行为,您可以考虑将
配置/environments/development.rb
中的所有请求\u local设置为
false
(请参阅)。这将禁用向浏览器发送调试信息


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

正如斯皮克曼已经指出的那样,这很重要

原因是设置了
考虑所有请求\u本地
配置,该配置确定错误消息显示的信息量。在
开发
模式下,此设置设置为
,而在
生产
中设置为

如果您想事先查看
生产中的外观
请更改相应的设置

# Show full error reports and disable caching.
config.consider_all_requests_local       = true
config/environments/development.rb中