处理Rails 3中的未知操作

8

我是Rails开发的新手,对于如何处理未知动作(unknown action)有些疑惑。那么,在处理这种类型的错误时,最好的方法是什么?

5个回答

10

不要处理它。如果用户输入了错误的URL,当您切换到生产环境时,他将会收到404错误。

您只会收到异常是因为您处于开发环境。


1
显示404错误,用户输入的URL在控制器(或路由)中没有对应的操作定义来处理。它应该被视为用户输入了example.com/controller/jbsandfodsafoiuaudsfbsadf87basdfgsadfdsa的情况。

1
config/environments/development.rb中关闭consider_all_requests_local,然后重新启动服务器。现在您将看到错误页面。完成设计后,请打开consider_all_requests_local并再次重启服务器。
在生产环境中,用户会看到您设计的404页面。在开发中,您可以看到堆栈跟踪,以便调试自己的错误。

0
在生产模式中,异常将自动处理。 但有些情况下我们希望自己来处理异常。在这种情况下,我们渲染特殊的页面布局。
在应用控制器中,您需要像这样捕获异常:
  PAGE_NOT_FOUND_ERRORS = ActiveRecord::RecordNotFound, ActionController::RoutingError, ActionController::UnknownAction, ActionController::UnknownController
  def rescue_action_in_public(exception)
    case exception
    when *PAGE_NOT_FOUND_ERRORS
      render_404
    else
      render_500
    end
  end


  def render_404
    render :file => File.join(RAILS_ROOT, 'public', '404.html'), :status => 404, :layout => true
  end



  def render_500
    render :file => File.join(RAILS_ROOT, 'public', '500.html'), :status => 500
  end

0

你应该可以使用默认的Rails处理方式,它会在你的public目录中加载404文件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接