我有一个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.erb
。 formats=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
- 最重要的是,我的日志中的错误会减少!
答案 0 :(得分:1)
您可以在操作中添加respond_with
以避免此错误。
例如,在users_contoller中:
respond_to :html
def index
@users = User.all
respond_with(@users)
end
如果有/users.jpg请求,则会返回 406 Not Acceptable 。