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

时间:2015-03-10 08:58:53

标签: ruby-on-rails ruby-on-rails-4 rails-i18n

在我的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

出于某种原因,在初始化实例后,@ devation_marker包含<p>deprecated</p>而不是预期的deprecated<p>来自哪里?我怎么能摆脱它?

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

1 个答案:

答案 0 :(得分:2)

对于所有面临类似问题的人,在我的情况下,它是由Redcloth gem引起的,它还定义了ER::Util#textilize的别名。因此,我对t(:deprecated)的电话实际上并未使用I18n.t

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