如何在语言环境发生变化时使片段缓存失效?

我正在尝试使用片段缓存来缓存使用I18n的Ruby on Rails站点上的页脚和导航栏。 问题是,更改语言然后会以错误的语言显示页脚和导航栏。 当语言环境发生变化时,如何使片段缓存失效?

您应该将语言环境作为缓存键的一部分,而不是使片段缓存过期

cache :locale => I18n.locale, ... do ... end 

这样,不同的用户可以看到页脚/导航栏的不同语言版本,但所有用户都会看到缓存版本。

在Rails 3中缓存片段时,这对我有用:

 - cache([object, locale: I18n.locale]) do