不合理的路由错误为favicon.ico



我刚刚完成了为现有复杂网站的导入/导出功能编程。它的设置方式是在游戏/5 节目动作上,我有一个"导入"和一个"导出"按钮。这会导致适当命名的控制器操作,这些操作执行导入/导出,然后再次render :action => show

单击导出操作会给出"很抱歉,但出了点问题"消息,而生产.log给出了

Started GET "/games/3/export" for 212.87.32.10 at 2012-05-30 09:30:18 +0000
Processing by GamesController#export as HTML
  Parameters: {"id"=>"3"}

Started GET "/favicon.ico" for 212.87.32.10 at 2012-05-30 09:30:50 +0000
ActionController::RoutingError (No route matches [GET] "/favicon.ico"):
  actionpack (3.2.2) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call'
  actionpack (3.2.2) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
  railties (3.2.2) lib/rails/rack/logger.rb:26:in `call_app'
  railties (3.2.2) lib/rails/rack/logger.rb:16:in `call'
  ...

为什么 Rails 只抱怨这一个动作中的图标,而有数百个页面使用相同的模板?考虑到我正在渲染相同的旧"显示"动作,为什么它至少之前没有在"显示"页面上抱怨?为什么缺少图形会导致"很抱歉,但出了点问题"消息?

我的网站图标实际上是托管在异地的,application.html.erb 中的链接是

<link rel="shortcut icon" href="http://www.wooga.com/wp-content/themes/wooga-dev/images/favicon.ico" type="image/x-icon" />

这不是"Rails 在一个动作中抱怨网站图标.ico",而是"Web 浏览器试图获取网站图标.ico而这个应用程序没有"。尝试挖掘为什么您的浏览器想要它?您是否从此操作中返回其他内容?挖掘Chrome Inspector的/Firebug的网络选项卡,检查响应标头/正文,检查浏览器何时尝试获取favicon.ico文件(也许是在响应正文返回之前,因为它花了太长时间?

还有关于你的最后一个问题:

为什么缺少图形会导致"很抱歉,但出了点问题"消息?

Rails 不知道 "/favicon.ico" 应该返回图像文件。这是带有 404 响应的标准请求,默认情况下返回"对不起..."消息。

最新更新