在制作中,我们经常会遇到以下异常:
在构造#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类型。
所以问题是:什么样的请求生成这种格式哈希?
答案 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