Rails FormBuilder子类和翻译

问题描述 投票:0回答:1

我正在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子类中找不到任何有关翻译问题的文档。如何实现?

<<

[认真考虑之后,我发现以下方法可行。但是我不确定它是否优雅。它似乎可以在所有我使用的地方使用。
解决方案是使用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

ruby-on-rails forms translation subclass formbuilder
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.