Ruby on rails 3 Rails 3应用程序在以下情况下抛出错误;接受:无”;传递HTTP头

Ruby on rails 3 Rails 3应用程序在以下情况下抛出错误;接受:无”;传递HTTP头,ruby-on-rails-3,http-headers,mime-types,Ruby On Rails 3,Http Headers,Mime Types,当某些浏览器请求我们的网站,但指定了一个Accept:NoneHTTP头(看起来主要是移动的)时,我们看到了Airbrake异常。经过一系列研究,大多数面向消费者的应用程序似乎只是忽略了Accept HTTP头和send HTML,我们之前通过将其添加到mime\u types.rb文件中解决了这一问题 Mime::Type.register "none", :html 但后来我们的电子邮件开始以纯文本发送,我相信这是因为我们正在重新定义text/html的工作方式。是否有更好的解决方案,以便

当某些浏览器请求我们的网站,但指定了一个
Accept:None
HTTP头(看起来主要是移动的)时,我们看到了Airbrake异常。经过一系列研究,大多数面向消费者的应用程序似乎只是忽略了Accept HTTP头和send HTML,我们之前通过将其添加到
mime\u types.rb
文件中解决了这一问题

Mime::Type.register "none", :html
但后来我们的电子邮件开始以纯文本发送,我相信这是因为我们正在重新定义
text/html
的工作方式。是否有更好的解决方案,以便在有人发送
Accept:None
标题时仍发送HTML

编辑:我忘了说,这是我运行
rails c
时得到的,我想知道我是否在重新定义HTML

$ rails c
/1.9.3-p194/lib/ruby/gems/1.9.1/gems/actionpack-3.2.12/lib/action_dispatch/http/mime_type.rb:102: warning: already initialized constant HTML
试一试

它添加了
“none”
作为
html的
mime\u type\u同义词

试试看

它添加了
“none”
作为
html的
mime\u type\u同义词


另一个修复方法是在
应用程序控制器的
之前添加以下

def fix_accept_headers_for_none
  if request.formats.include?("none")
    request.format = :html
  end
end

另一个修复方法是在过滤器
之前将以下
添加到
应用程序控制器

def fix_accept_headers_for_none
  if request.formats.include?("none")
    request.format = :html
  end
end

这实际上创建了一个警告,因为它在
MimeType
中重新定义了
HTML
常量。这实际上创建了一个警告,因为它在
MimeType
中重新定义了
HTML
常量