【问题标题】:Rails FormBuilder subclass and translationRails FormBuilder 子类和翻译
【发布时间】:2019-11-10 14:54:22
【问题描述】:

我正在 Rails 中构建一个 FormBuilder,它应该生成符合 materializecss 的复选框,如 https://materializecss.com/checkboxes.html 所示

基本上我正在寻找一种方法def check_box_with_label(name) 产生类似的东西:

<label>
    <input type="checkbox" />
    <span>TRANSLATED LABEL FOR NAME AS DEFINED IN TRANSLATION</span>
</label>

我的问题是用翻译版本填充内部跨度。使用 label_tag 等不使用翻译。翻译位于单独的 YML 文件中,部分由 devise-i18n 提供。我在 FormBuilder 子类中找不到任何有关翻译问题的文档。如何实现?

【问题讨论】:

    标签: ruby-on-rails forms translation subclass formbuilder


    【解决方案1】:

    经过严重的摆弄,我发现以下方法有效。但是我不确定它是否优雅。它似乎在我使用它的所有地方都有效。

    解决方案是使用 FormBuilder 父类中可用的@object_name,以便在正确的位置查找翻译。

    # app/helpers/materialize_form_builder.rb
    class MaterializeFormBuilder < ActionView::Helpers::FormBuilder
      def check_box_with_label(name)
        return %Q(<label>#{check_box(name)}<span>#{tr(name)}</span></label>).html_safe
      end
    
      private
    
      def tr(name)
        I18n.t(name, scope: [:activerecord, :attributes, @object_name])
      end
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-20
      • 1970-01-01
      • 1970-01-01
      • 2016-11-18
      相关资源
      最近更新 更多