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