1

本番環境では、定期的に次の例外が発生します。

ActionView::MissingTemplate がコンストラクションで発生しました#show:

{: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 タイプはありません。

問題は、このフォーマット ハッシュを生成するのはどのような要求かということです。

4

1 に答える 1

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 : / 

これを修正するには、次の 2 つの方法があります。

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
于 2014-04-12T15:01:12.803 に答える