Гон отлично работает с 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 имеют ожидаемые значения, но внезапно страница больше не отображается как HTML в Chrome.
Есть идеи, как это решить?