Rails缓存内插部分名称的摘要错误

The*_*ter 5 caching ruby-on-rails

我有一个应用程序,我通过使用缓存大大改善了响应时间.

我是俄罗斯娃娃缓存片段,一个片段呈现几个(嵌套)部分.似乎所有东西都应该像它应该的那样工作,但是我所包含的部分部分是由插值字符串构成的.对于那些部分,我在错误日志中收到缓存错误:

找不到用于摘要的模板:path/to /#{my.calculated.partial.name}

我花了一些时间在谷歌上,我发现的唯一一件事是很多人都希望关闭消化.所以我基本上有几个问题:

  1. 有没有办法解决这个特殊问题?(即具有实际"评估"部分名称的缓存摘要)?

    • 我可以想象这个答案是"不",因为页面的缓存版本没有执行任何代码,因此插值字符串不能
  2. 更一般:我为什么要启用或禁用缓存摘要?他们的目的是什么?

  3. 您如何建议我解决这些错误(如果没有解决1)?

更新:

根据要求,一个给我这个错误的视图的例子是:

-cache ['survey', @survey], expires_in: expire_period
  [...]
  -cache ['survey_questions', @survey]
    -@survey.questions.each do |q|
      =render "field_types/#{q.field_type.type.underscore}", question: q, f: f
Run Code Online (Sandbox Code Playgroud)

例如,当字段类型为"文本输入"时,它会呈现field_types/_text_input.html.haml.一切都很好.我将在日志中得到的错误是:

_无法找到消化模板:field_types/field_types /#{q.field_type.type.underscore} _