更新到Rails 4.1后出现的ActionController::UnknownFormat错误

4
在我的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”时以特定方式响应,但这并不理想。有什么办法可以解决这个问题吗?

也许有点牵强,但你的相关视图文件是否以正确的扩展名命名?(errors/error_404.html.erb)通常会抛出与视图相关的错误,但检查一下也无妨。 - Dan L
刚刚检查了一下,扩展名确实是正确的。不过我不知道那是否仍然是个问题,因为我使用的是Rails 4.1.6,已经有一段时间没有出现这个问题了。 - ben
1个回答

0

format 是 ActionController::MimeResponds::Collector 类的一个对象。你可以查看 API 获取更多信息。


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