我的Rails3站点被带有奇怪的accept头的爬虫程序击中,触发异常,如下所示
ActionView::MissingTemplate occurred in home#show以下是一些导致问题的accept标头
text/*
application/jxw
*/*;q=0.1在这些情况下,这被解释为请求的格式,因此导致缺少模板错误。我真的不关心我返回给这些爬虫的是什么,只是想避免异常。
发布于 2011-02-05 14:18:37
您可以在应用程序控制器中避免出现这样的异常,并呈现HTML模板:
class ApplicationController
rescue_from ActionView::MissingTemplate, :with => :render_html
def render_html
if not request.format == "html" and Rails.env.production?
render :format => "html"
else
raise ActionView::MissingTemplate
end
end
end发布于 2011-05-30 23:22:04
因为这样会阻止添加评论,直到我有50个声誉,我必须提交一个新的答案来回答Ryan Bigg在评论中的问题。
not request.format == "html"和request.format != "html"或多或少是一回事。and、or和not在逻辑上与&&、||和!相同,但它们的优先级要低得多。因此,在本例中,==运算符在not运算符之前进行计算,因此它会产生与使用!=相同的结果。
https://stackoverflow.com/questions/4905229
复制相似问题