向某种用户显示详细的错误信息

时间:2015-10-09 23:42:32

标签: ruby-on-rails

在rails 2.3应用程序中,如果@user.is_admin?为真,我想显示详细的错误异常信息。否则在500.rhtml上显示一般错误。

最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

在ApplicationController中,rescue_from StandardError,在该方法中,渲染一个打印异常消息并回溯的视图。

class ApplicationController
  rescue_from StandardError, :with => :show_exception

  def show_exception(e)
    @e = e
    render "global/show_exception"
  end
end

# app/views/global/show_exception.html.erb
<h1><%= @e.message %></h1>
<pre>
  <%= @e.backtrace %>
</pre>

这应该可以解决问题。另一个选项是让一个before_filter检查用户是否是管理员,然后将consider_all_requests_local的应用程序配置设置为true(如果是)。

before_filter { Rails.application.config.consider_all_requests_local = current_user.try(:is_admin?) }