奇怪的MissingTemplate例外:格式=> [:jpeg,“image / pjpeg”,:png,:gif]

时间:2013-09-19 11:56:20

标签: ruby-on-rails exception mime-types

在制作中,我们经常会遇到以下异常:

  

在构造#show:

中发生了ActionView :: MissingTemplate      

缺少模板构造/ show,application / show with {:locale = 3D> [:=   ru],:formats = 3D> [:jpeg,“image / pjpeg”,:png,:gif],:handlers = 3D> [:erb,:b =   uilder,:coffee,:jbuilder,:haml]}

这里让我感到困惑的是格式哈希,它要求一些图像(:jpeg,“image / pjpeg”,:png,:gif)。我们的应用程序中没有注册自定义MIME类型,据我所知,没有相应的Rails默认MIME类型。

所以问题是:什么样的请求生成这种格式哈希?

1 个答案:

答案 0 :(得分:2)

我也有同样的错误。我注意到这是来自“YandexImage”的搜索引擎试图获得自定义格式。在我的控制器上,操作只是空的,因为它是一个静态* .html.erb页面。这是更多信息。

* DOCUMENT_ROOT : /srv/www/apps/mysite/current/public 
* HTTP_ACCEPT : image/jpeg, image/pjpeg, image/png, image/gif 
* HTTP_CONNECTION : Keep-Alive 
* HTTP_FROM : support@search.yandex.ru 
* HTTP_HOST : mysite.com 
* HTTP_USER_AGENT : Mozilla/5.0 (compatible; YandexImages/3.0; +http://yandex.com/bots) 
* ORIGINAL_FULLPATH : / 

解决此问题的两种方法:

修改public / robots.txt以阻止YandexImage。请在http://yandex.com/bots

查看更多信息
User-agent: YandexImage 
Disallow: /

或者将以下代码添加到您的操作中,它只会处理html,否则会引发未找到的页面

respond_to do |format|
  format.html
  format.any { raise ActionController::RoutingError.new('Not Found') }
end