为什么 Rails I18n.t 将我的翻译包装在一个段落中



在我的Rails 4应用程序中,我使用一个辅助类为UI元素生成JSON树。以下是该类的简化版本:

class TaxonomyTree
    def initialize(root_node)
        @root_node = root_node
        @deprecation_marker = t(:deprecated)
    end
    # Method for generating the JSON tree which use @deprecation_marker ...
end

我的语言环境中的相应条目如下所示:

en:
    deprecated: deprecated

出于某种原因,在初始化实例后,@deprecation_marker 包含 <p>deprecated</p> 而不是预期的deprecated<p>从何而来?我怎样才能摆脱它?

PS:我猜这与类是从视图实例化的事实有关(我知道这不是最佳的)。但是,这种行为什么时候是可取的呢?

对于所有面临类似问题的人来说,就我而言,它是由红布宝石引起的,它也为 ER::Util#textilize 定义了 t 别名。因此,我对t(:deprecated)的调用实际上并没有使用I18n.t

解决方法很简单,而不是我现在使用t(:deprecated) I18n.t(:deprecated).

最新更新