我已经设置了一个控制器来处理异常(404,522和500)。
所有内容似乎都正确连接,当我点击不存在的页面时,在我的日志结尾处,我看到以下内容:
由ErrorsController#error_404处理为HTML呈现 errors / layouts / single_column_layout中的errors / error_404.html.erb (0.2ms)在4ms内完成500内部服务器错误
但是我在浏览器中收到一般错误消息:
我的控制器看起来像这样:
class ErrorsController < ApplicationController
respond_to :html
layout "shared/layouts/single_column_layout"
def error_404
@bad_url = params[:id]
render status: :not_found
end
def error_422
render status: :unprocessable_entity
end
def error_500
render status: :internal_server_error
end
end
在我的development.rb
:
config.consider_all_requests_local = false
在我的application.rb
:
config.exceptions_app = self.routes
我的routes.rb
包含:
match "/404" => "errors#error_404"
match "/422" => "errors#error_422"
match "/500" => "errors#error_500"
我还从public
目录中删除了所有静态错误页面。
404的完整堆栈跟踪是:
在2014-03-08 14:21:24 +0000
开始获取127.0.0.1的“/ what”ActionController :: RoutingError(没有路由匹配[GET]“/ downl”):
actionpack(3.2.12) lib / action_dispatch / middleware / debug_exceptions.rb:21:incall'
call'
actionpack (3.2.12) lib/action_dispatch/middleware/show_exceptions.rb:56:in
railties(3.2.12)lib / rails / rack / logger.rb:32:incall_app' railties (3.2.12) lib/rails/rack/logger.rb:16:in
块中的电话'
activesupport(3.2.12)lib / active_support / tagged_logging.rb:22:intagged' railties (3.2.12) lib/rails/rack/logger.rb:16:in
称之为'
quiet_assets(1.0.2)lib / quiet_assets.rb:18:incall_with_quiet_assets' actionpack (3.2.12) lib/action_dispatch/middleware/request_id.rb:22:in
称'机架' (1.4.5)lib / rack / methodoverride.rb:21:在call' rack (1.4.5) lib/rack/runtime.rb:17:in
调用'activesupport(3.2.12) lib / active_support / cache / strategy / local_cache.rb:72:在call' rack (1.4.5) lib/rack/lock.rb:15:in
调用'rack-livereload(0.3.15) lib / rack / livereload.rb:23:in_call' rack-livereload (0.3.15) lib/rack/livereload.rb:14:in
call'actionpack(3.2.12) lib / action_dispatch / middleware / static.rb:62:在call' xipio (1.0.0) lib/xipio/middleware.rb:10:in
调用'railties(3.2.12) lib / rails / engine.rb:479:在call' railties (3.2.12) lib/rails/application.rb:223:in
调用'railties(3.2.12) lib / rails / railtie / configurable.rb:30:inmethod_missing'
handle'/ Users / me / Library / Application 支持/战俘/版本/ 0.4.1 / node_modules / NACK / lib中/ NACK / server.rb:99:在 在{/ Users / me / Library / Application中
/Users/me/Library/Application Support/Pow/Versions/0.4.1/node_modules/nack/lib/nack/server.rb:145:inrescue in block (2 levels) in start' /Users/me/Library/Application Support/Pow/Versions/0.4.1/node_modules/nack/lib/nack/server.rb:96:in
阻止(2个级别) 支持/战俘/版本/ 0.4.1 / node_modules / NACK / lib中/ NACK / server.rb:86:在 开始'/ Users / me / Library / Application中的each' /Users/me/Library/Application Support/Pow/Versions/0.4.1/node_modules/nack/lib/nack/server.rb:86:in
阻止 支撑/的Pow /版本/ 0.4.1 / node_modules / NACK / LIB / NACK / server.rb:66:在loop' /Users/me/Library/Application Support/Pow/Versions/0.4.1/node_modules/nack/lib/nack/server.rb:66:in
启动'/ Users / me / Library / Application 支撑/的Pow /版本/ 0.4.1 / node_modules / NACK / LIB / NACK / server.rb:13:在run' /Users/me/Library/Application Support/Pow/Versions/0.4.1/node_modules/nack/bin/nack_worker:4:in
“由ErrorsController#error_404处理为HTML呈现 errors / layouts / single_column_layout中的errors / error_404.html.erb (0.3ms)在5ms内完成500内部服务器错误