Ruby on rails Rails缺少模板错误,仅偶尔出现

Ruby on rails Rails缺少模板错误,仅偶尔出现,ruby-on-rails,erb,Ruby On Rails,Erb,Rails 4.2.1上的制作网站 一切正常,但主页上偶尔会出现奇怪的错误: Missing template home/index, application/index with {:locale=>[:en], :formats=>["text/html;text/plain"], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :jbuilder]}. Searched in: [..

Rails 4.2.1上的制作网站

一切正常,但主页上偶尔会出现奇怪的错误:

Missing template home/index, application/index with {:locale=>[:en], :formats=>["text/html;text/plain"], :variants=>[], :handlers=>[:erb, :builder, :raw, :ruby, :coffee, :jbuilder]}. Searched in:
[...] /releases/20150619150924/app/views"
[...] shared/bundle/ruby/2.1.0/gems/devise-3.5.1/app/views"
显然,app/views/home/index.html.erb存在,并且在大多数情况下工作正常,但它似乎偶尔会错过一次。不知道这里发生了什么,怎么可能只是偶尔发生?我从来没有在登台或开发中看到过这一点

请注意,每几百次页面浏览只会发生一次


我是不是遗漏了什么?感谢所有指针。

此错误的原因是标头不正确,您只需通过curl请求复制即可:

curl -v -H "Accept: text/html;text/plain" http://your.domain
似乎有人在写他的机器人时犯了错误。这是正确的:

curl -v -H "Accept: text/html; q=0.2 text/plain" http://your.domain
这一条也是有效的:

curl -v -H "Accept: text/html,text/plain" http://your.domain
RFC:

您可以通过中间件进行修复:

# lib/fix_accept_header.rb
class FixAcceptHeader
  def initialize(app)
    @app = app
  end

  def call(env)
    if env["HTTP_ACCEPT"] =~ %r(text/html;\s*text/plain)
      env["HTTP_ACCEPT"] = "text/html, text/plain"
    end

    @app.call(env)
  end
end

# config/application.rb
require File.expand_path('../../lib/fix_accept_header', __FILE__)
#...

class Application < Rails::Application
  #...

  config.middleware.use FixAcceptHeader
end
#lib/fix_accept_header.rb
类FixAcceptHeader
def初始化(应用程序)
@app=app
结束
def呼叫(环境)
如果env[“HTTP\u ACCEPT”]=~%r(text/html;\s*text/plain)
env[“HTTP_ACCEPT”]=“text/html,text/plain”
结束
@应用程序调用(环境)
结束
结束
#config/application.rb
需要文件。展开\u路径('../../lib/fix\u accept\u header',\u文件\u)
#...
类应用程序
什么时候发生?创建记录后?我猜请求mime类型很奇怪,rails正在尝试查找
.html.erb
以外的内容。Internet Explorder 6以这种恶作剧而闻名。@AhmadAl kheat嗨,不,只是加载主页(获取)很好,谢谢。很高兴知道我的申请没有问题。