Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 为什么';t Rails响应错误406?_Ruby On Rails - Fatal编程技术网

Ruby on rails 为什么';t Rails响应错误406?

Ruby on rails 为什么';t Rails响应错误406?,ruby-on-rails,Ruby On Rails,我的控制器具有以下操作: def foo 回应待办事项|格式| format.csv{“foo,bar,baz”} 终止 终止 但是如果我用浏览器访问相应的地址,而不是得到406错误,我会得到500错误,并且在开发中,ActionController::UnknownFormat 我可以手动获取406错误: format.all{head:not_acceptable} Rails不应该自动完成吗?试试看 respond_to do |format| format.html form

我的控制器具有以下操作:

def foo
回应待办事项|格式|
format.csv{“foo,bar,baz”}
终止
终止
但是如果我用浏览器访问相应的地址,而不是得到406错误,我会得到500错误,并且在开发中,
ActionController::UnknownFormat

我可以手动获取406错误:

format.all{head:not_acceptable}
Rails不应该自动完成吗?

试试看

respond_to do |format|
  format.html
  format.csv { send_data "foo,bar,baz" }
end

实际上,Rails正确地发送了HTTP 406,但我们将其误认为是500,原因有二:

  • 开发
    环境中,我们得到一个406Rails错误页面,我们认为只有在异常未提示时才会显示该页面
  • production
    环境中,异常被记录在Rollbar中,可能是在被重新调用并被Rails解救以发送406消息之前
使用
telnet
openssl s_客户端
确认,在这两种情况下,我们都得到了406

我们的解决方案是忽略滚动条配置中的
ActionController::UnknownFormat

config.exception_level_filters.merge!({
  'ActionController::UnknownFormat' => 'ignore'
})

只有代码的答案是低质量的答案。添加一些解释;解释为什么这段代码可以工作?另外,这是我最初的代码,但这会产生一个错误,因为HTML缺少模板。