Я пытаюсь кэшировать часть, которая отображается в макете. Это частичное вычислительно дорого, поэтому я хочу вычислить его только один раз. Это не зависит от контроллера, поэтому обычное кэширование фрагментов, кажется, не применяется. Вместо этого я решил использовать Rails.cache.fetch ('menu') для кеширования. Вот как выглядит содержимое части.
<% Rails.cache.fetch('menu') do %>
Partial code...
<% end %>
Но когда я делаю это, он визуализирует частичное дважды. По какой-то причине он перестал делать это в моей среде разработки, поэтому я решил попробовать и развернуть его. Мне не так повезло с моей производственной средой. Сам партиал генерирует меню, которое включает ссылки на множество записей на сайте, чтобы помочь улучшить навигацию.
Первоначально я пытался поместить оператор кэша в файл макета, но затем он дважды отображал макет.
Я недавно добавил хакер jQuery для удаления дубликата html, чтобы он вроде как "работал", но я бы предпочел, чтобы он работал правильно. Я не хочу вдаваться в проблемы при установке какой-то сложной системы кэширования, такой как Redis, для которой мне нужно запустить другую серверную программу. Это было бы излишним для этой задачи. В рельсах должно быть что-то, что хорошо подходит для кэширования частей макетов.
Должен ли я попробовать что-то совершенно другое или это ошибка в рельсах? Если это ошибка, то есть ли обходной путь, который я могу использовать?