所以,到目前为止,我已完成以下操作(请参阅下面的代码),404.html.erb页面运行正常!但是,500 .html.erb页面由于某种原因没有加载,它会将默认值保留回公用文件夹中的500.html页面。所以我删除了这个500.html文件,现在当出现异常时,它只是一个空白的白色屏幕。
我做错了什么?为什么自定义404页面有效? (使用导轨4顺便说一句)
请参阅下面的代码:
errors_controller.rb
class ErrorsController < ApplicationController
def error_404
@not_found_path = params[:not_found]
end
def error_500
end
end
application_controller.rb
class ApplicationController < ActionController::Base
...
unless Rails.application.config.consider_all_requests_local
rescue_from Exception, with: lambda { |exception| render_error 500, exception }
rescue_from ActionController::RoutingError, ActionController::UnknownController, ::AbstractController::ActionNotFound, ActiveRecord::RecordNotFound, with: lambda { |exception| render_error 404, exception }
end
...
private
def render_error(status, exception)
respond_to do |format|
format.html { render template: "errors/error_#{status}", layout: 'layouts/application', status: status }
format.all { render nothing: true, status: status }
end
end
视图/错误/ error_404.html.erb:
<div class="errorbox">
<h1><%= image_tag('errorimage.png') %>Oops! This page couldn't be found.</h1>
<p class="leftbox"><%= link_to 'Return to previous page', :back %></p>
<p><%= link_to 'Report a problem', contact_us_path %></p>
</div>
视图/错误/ error_500.html.erb
<div class="errorbox">
<h1><%= image_tag('errorimage.png') %>Oops! Something went wrong.</h1>
<p class="leftbox"><%= link_to 'Return to previous page', :back %></p>
<p><%= link_to 'Report a problem', contact_us_path %></p>
</div>
如果出现服务器错误,如何显示自定义500.html.erb?
答案 0 :(得分:0)
首先在routes.rb
get "500", to "errors#error_500", code: "500"
然后使用相应的控制器方法和模板来处理它。