Ruby on Rails中的自定义错误页面

时间:2010-07-18 20:04:28

标签: ruby-on-rails

我的控制器中有这个代码:

raise PermissionDenied

执行此操作时,我想显示用HAML编写的自定义错误页面,而不是默认的NameError页面。

任何人都可以帮助我吗?感谢。

1 个答案:

答案 0 :(得分:2)

rescue_from方法可用于全局异常处理。

更改app/controller/application_controller.rb文件以添加例外处理程序。

class ApplicationController < ActionController::Base

  rescue_from ::PermissionDenied, :with => :render_permission_denied

  def render_permission_denied(e)
    @error = e   # Optional, accessible in the error template
    log_error(e) # Optional 
    render :template => 'error_pages/permission_denied', :status => :forbidden
  end
end

现在在permission_denied.html.haml目录中添加一个名为app/views/error_pages的haml文件。

%h1 Permission Denied!
  %p #{@error.message}

有关详细信息,请参阅导轨documentation