【发布时间】:2016-10-05 13:43:31
【问题描述】:
我已经安装了 Rails exception_handler 并尝试按照说明设置自定义错误处理,但是我仍然收到 gem 创建的标准 500 错误消息:
500 内部服务器错误
如果你是这个的管理员 网站,然后请阅读此 Web 应用程序的日志文件和/或 Web 服务器的日志文件以找出问题所在。
这是我添加到config/application.rb 的内容:
class Application < Rails::Application
config.exception_handler = {
dev: true,
layouts: {
'500' => 'exception'
}
}
end
我在layouts/exception.html.erb 创建了一个异常布局:
<!DOCTYPE html>
<html>
<head>
<title><%= "Error - #{@exception.status} Error" %></title>
</head>
<body>
<div class="container">
<%= yield %>
</div>
</body>
</html>
并生成默认异常视图:rails generate exception_handler:views
<div class="error">
<% if /^(5[0-9]{2})$/ =~ @exception.status.to_s %>
<!--Message -->
<%= content_tag :div, class: "message" do %>
<%= content_tag :div, class: "title" do %>
<span><%= "#{@exception.status} Error - #{details[:name]}" %></span>
<%= link_to image_tag("exception_handler/close.png"), main_app.root_url, title: "Close (Go back home)", class: "close" %>
<% end %>
<%= content_tag :div, class: "details" do %>
<%= image_tag "exception_handler/alert.png", title: "#{@exception.status} Error" %>
<div class="status"><%= @exception.status %> Error</div>
<% end %>
<%= content_tag :div, class: "info" do %>
<span><%= details[:description] %></span>
<div class="notification">
<%= link_to image_tag("exception_handler/home.png", title: "Go Back Home"), main_app.root_url, class: "home" %>
<div class="version">v<%= Rails.version %></div>
<strong>Our developers have been notified - we're working on it!</strong>
</div>
<% end %>
<% end %>
<% else %>
<%= content_tag :div, details[:description], class: "message" %>
<% end %>
</div>
我尝试重新启动我的 Rails 服务器只是为了确保更改生效,但它仍然无法正常工作。我错过了什么?
【问题讨论】:
-
您是否查看了日志文件中的错误是什么?也许这是这个 gem 无法处理的错误。
-
您的
config/development.rb中确实有config.consider_all_requests_local = true,对吗? PS:我假设您正在开发环境中进行测试。 -
@AlexandreAngelim 是的。
-
@slowjack2k 看起来它正在尝试使用我的默认布局
application.html.erb,而不是exception.html.erb:Completed 500 Internal Server Error in 299ms Error during failsafe response: undefined methodeach' 用于 nil:NilClass /Users/godzilla74/Coding/neo-api/app /views/layouts/_navigation.html.erb:38:in_app_views_layouts__navigation_html_erb__2393319544277720129_70250216188520' -
您应该将
'500' => 'exception'更改为500 => 'exception'(键500 - 是整数而不是字符串)
标签: ruby-on-rails ruby exceptionhandler