Gon 与 Jbuilder 配合得很好。特别是,文档告诉像这样使用它
gon.jbuilder template: 'path/to/template.json.jbuilder'
这很好用,但我想缓存模板结果,所以不需要重新渲染模板。因此,我使用render_to_string了,像这样:
gon.entities = Rails.cache.fetch('entities_json') do
JSON.parse render_to_string(template: 'path/to/template.json.jbuilder')
end
该方法返回适当的字符串,我必须通过 JSON.parse 传递它,否则该gon变量存储一个双重编码的 JSON 字符串。这很烦人,但我不知道如何解决它。
不幸的是,这个调用render_to_string导致整个 HTML 页面被呈现为一个字符串。HTML 已完成,gon 变量具有预期值,但突然之间,该页面在 Chrome 中不再显示为 HTML。
知道如何解决这个问题吗?