关于缺少视图welcome / index的罕见错误(:formats => [“image / *”])

时间:2014-12-15 23:55:31

标签: ruby-on-rails ruby-on-rails-3 heroku

我有一个Heroku / Rails 3.2网站,主页为welcome / index。一切正常,主页获得大量点击,但每隔一段时间,我会在日志中注意到其中一个错误:

  

ActionView :: MissingTemplate:缺少模板欢迎/索引,应用程序/索引{:locale => [:en],:formats => [“image / *”],:handlers => [:erb ,:builder,:arb]}。搜索:*“/ app / app / views”*“/ app / vendor / bundle / ruby​​ /`...(它列出了一些宝石的位置)

欢迎视图位于正常位置app/views/welcome/index.html.erbformats=image/*对我很怀疑,如果我请求...com/welcome.jpg,我可能会导致类似的错误,但是日志会将这些错误报告为对根目录的请求/。

发生了什么事?我该怎样预防呢? (我怎么能复制它?)。

解决:
在控制器as shown in the accepted answer below中使用respond_to :html

解释
我的应用程序试图响应每种类型的请求,(html,jpg,json,rss等)。解决方法是仅响应html请求,并向非html请求发送406错误。我可以通过请求...com/welcome.rss等网址或在Chrome控制台中输入此网址来复制这些错误:

var xmlhttp;
xmlhttp=new XMLHttpRequest();
xmlhttp.open("GET","",false);
xmlhttp.setRequestHeader("Accept", "image/*");
xmlhttp.send();

修复的结果是:
  - 用户将获得406而不是500   - 我的应用程序将不必处理500s   - 最重要的是,我的日志中的错误会减少!

1 个答案:

答案 0 :(得分:1)

您可以在操作中添加respond_with以避免此错误。

例如,在users_contoller中:

  respond_to :html

  def index
    @users = User.all
    respond_with(@users)
  end

如果有/users.jpg请求,则会返回 406 Not Acceptable