当接受标题为 text/plain

问题描述

我们有一个 rails 5 应用程序,其中绝大多数应用程序响应应该是 html。预期由 text/plain 请求的另外一组有限的 Ajax 请求,以及控制器响应可以返回纯文本响应的少数情况。 最近,我们的应用程序开始接收对带有 text/plain 接受标头的常规 html 页面查询。而这些正在产生异常

ActionView::Template::Error in XYZ
Missing partial ABC with {:locale=>[:en],:formats=>[:text],:variants=>[],:handlers=>[:raw,:erb,:html,:builder,:ruby,:coffee,:jbuilder]}.

我们的模板/部分被恰当地命名为 ABC.html.erb

我们发现我们可以将我们的文件更改为 ABC.erb 并且它们将开始运行,但我们不希望必须重命名我们的所有文件

我们已尝试通过 config/initalizers/mime_types.rb
调整我们的应用支持的已注册 mime/types 的几种方法 在我们最好的情况下,通过使用 Mime::Type.unregister :txt,当接受标头为 ABC.html.erb 时,我们使 Rails 正确提供 text/plain 文件。但是,这会导致我们的应用在使用 render(plain: ...) 时引发异常。

纯文本渲染链似乎是:

  • ABC.txt.erb
  • ABC.erb

我们不希望在所有情况下都吞下 ActionView::Template::Error

谁能建议一种方法来实现以下其中一项:

  1. 在为除少数几个路由之外的所有路由请求 text/plain 时,向客户端返回适当的 http 错误代码
  2. 更改渲染模板搜索链以始终在 ABC.html.erb 之前搜索 ABC.erb
  3. 在不引发异常的情况下合理处理这些请求的其他一些适当方法

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)