如何自定义500.html错误页面? (导轨)

时间:2014-09-18 21:12:28

标签: ruby-on-rails ruby-on-rails-4

所以,到目前为止,我已完成以下操作(请参阅下面的代码),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?

1 个答案:

答案 0 :(得分:0)

首先在routes.rb

中写一条错误路线
get "500", to "errors#error_500", code: "500"

然后使用相应的控制器方法和模板来处理它。