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 として表示されなくなりました。
これを解決する方法はありますか?