缓存的Ruby Haml块返回空

问题描述

我正在HAML代码中执行一些缓存,其中还包括逻辑:

- Rails.cache.fetch('unique_key') do
    some text
    - if false
        more text

初始渲染工作正常,但后续调用返回空白。 我怀疑结尾的if语句是原因。

有人解释为什么会这样吗?任何建议如何克服它?

一种效果理想的优雅解决方案是附加一些尾随的虚拟块:

- Rails.cache.fetch('unique_key') do
    some text
    - if false
        more text
    %div.blank

谢谢

解决方法

该块中最后一个求值的语句是if false。该语句的结果为nil。并且此值存储在缓存中。添加%div.blank时,存储在缓存中的结果将类似于some text\n%div.blank。我会为视图cache('key')使用标准帮助程序,在两种情况下都应该可以正常工作。