问题描述
我们有一个 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
。
谁能建议一种方法来实现以下其中一项:
- 在为除少数几个路由之外的所有路由请求
text/plain
时,向客户端返回适当的 http 错误代码。 - 更改渲染模板搜索链以始终在
ABC.html.erb
之前搜索ABC.erb
- 在不引发异常的情况下合理处理这些请求的其他一些适当方法。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)