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

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

Възникна ActionView::MissingTemplate в конструкции#show:

Липсващи шаблонни конструкции/показване, приложение/показване с {:locale=3D>[:= ru], :formats=3D>[:jpeg, "image/pjpeg", :png, :gif], :handlers=3D>[ :erb, :b= uilder, :кафе, :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)


И аз получих същата грешка. Забелязвам, че това е от търсачка на "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 : [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, за да блокирате 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
person Jirapong    schedule 12.04.2014