Странное исключение MissingTemplate с: форматами = ›[: jpeg, image / pjpeg,: png,: gif]

В производстве мы регулярно получаем следующие исключения:

ActionView :: MissingTemplate возник в конструкциях # show:

Отсутствуют конструкции шаблона / шоу, приложение / шоу с {: locale = 3D> [: = ru],: sizes = 3D> [: jpeg, "image / pjpeg",: png,: gif],: handlers = 3D> [ : erb,: b = uilder,: coffee,: jbuilder,: haml]}

Что меня здесь озадачивает, так это хеш форматов, который запрашивает какое-то изображение (: jpeg, "image / pjpeg",: png,: gif). У нас нет зарегистрированных в нашем приложении пользовательских типов MIME, и, насколько мне известно, нет соответствующего MIME-типа по умолчанию для Rails.

Возникает вопрос: какой запрос генерирует хеш этого формата?


person Paul Nossoff    schedule 19.09.2013    source источник
comment
Пожалуйста, укажите свой контроллер и представление, которое делает запрос   -  person rderoldan1    schedule 20.09.2013


Ответы (1)


У меня такая же ошибка. Я заметил, что это из поисковой системы «ЯндексИмейдж», пытающейся получить пользовательский формат. На моем контроллере и действие просто пусто, потому что это статическая страница * .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 : [email protected] 
* HTTP_HOST : mysite.com 
* HTTP_USER_AGENT : Mozilla/5.0 (compatible; YandexImages/3.0; +http://yandex.com/bots) 
* ORIGINAL_FULLPATH : / 

Два способа исправить это:

Отредактируйте public / robots.txt, чтобы заблокировать ЯндексИзображение. см. дополнительную информацию на странице http://yandex.com/bots.

User-agent: YandexImage 
Disallow: /

Или добавьте следующий код к своему действию, он будет обрабатывать только html, иначе поднимет не найденную страницу

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