我很久以前就完成了本指南http://guides.rubyonrails.org/getting_started.html的大部分内容。
我设置了一个文章控制器,当我创建一篇新文章时,会生成一个新的数字,例如
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
我目前正在开发模式而非生产模式下运行。那有关系吗?
答案 0 :(得分:3)
是的,您必须以development
模式而不是production
运行。因为在development
应用程序中,其他默认值和尝试都经过优化,例如通过显示错误消息来帮助开发人员。
production
中的默认值与生产服务器上运行的应用程序不同并进行了优化:应用程序运行速度更快,不会向浏览器发送错误消息。
如果您想测试该行为,可以在consider_all_requests_local
至config/environments/development.rb
中设置false
的内容(请参阅Rails docs about configuration)。这会禁止向浏览器发送调试信息。
但是,我建议在production
环境中的服务器上运行应用程序。
答案 1 :(得分:0)
正如spickermann已经指出的那样,它确实很重要。
原因是consider_all_requests_local
配置的设置决定了错误消息显示的信息量。在development
模式下,此设置在true
false
时设为production
。
如果您想事先看到production
中的内容会改变相应的设置
# Show full error reports and disable caching.
config.consider_all_requests_local = true
config/environments/development.rb
中的