Единственный способ, которым я знаю, для кэширования партиалов (в общем)
<% cache do %>
<div> partial content </div>
<% end %>
, но я ищу решение (gem, monkey-patching, .., что-нибудь разумное), когда я могу определить динамическичто я хочу кэшировать на стороне контроллера или во время частичного определения, например:
# some controller
render 'expensive_view', cache_if: some_custom_logic_for_true_or_false
# or view
<%= render partial: 'expensive_partial', cache_if: some_custom_logic_for_true_or_false %>
На самом деле, у меня есть много (~ 100) партиалов, похожих на это
# current partial content
<div> partial content </div>
икаждый из них может быть кэширован или нет в зависимости от бизнес-логики времени выполнения.
Скучный способ состоит в рефакторинге каждого вида с чем-то вроде этого:
<% cache_if some_custom_logic_for_true_or_false do %>
<div> partial content </div>
<% end %>
но я ленивый и поэтому - ищу немного веселья здесь ...