在我的application_controller.rb
中,我使用render_404
方法捕获所有404:
def render_404(exception)
respond_to do |format|
format.html { render template: 'errors/error_404', layout: 'layouts/application', status: 404 }
format.all { render nothing: true, status: 404 }
end
end
第二行用于HTML以外的所有格式都能正常工作,这对于机器人向您发送随机页面请求时特别有用。
从Rails 4.0.4更新到4.1.1后,对非HTML格式的请求会向我抛出ActionController::UnknownFormat
错误,触发500并向我发送电子邮件。我猜这是由于添加了变种,但我无法找到Rails代码中的确切错误。
评论format.html
行会使format.all
行生效。我可能会破解我的render_500
方法以获得ActionController::UnknownFormat
时以特定方式做出反应,但这并不理想。知道如何解决这个问题吗?
答案 0 :(得分:0)
format是ActionController :: MimeResponds :: Collector类的对象。也许您可以查看API以获取更多信息。