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

时间:2012-05-20 08:44:15

标签: ruby-on-rails caching internationalization

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

3 个答案:

答案 0 :(得分:15)

您应该将语言环境作为缓存键的一部分,即

,而不是使片段缓存失效。
cache :locale => I18n.locale, ... do
  ...
end

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

答案 1 :(得分:6)

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

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

答案 2 :(得分:0)

我曾经有这个帮助器,所以不需要显式地将语言环境传递给每个import Logger class TestMe: def __init__(self): self.logger = Logger() # stuff 调用:

cache