После серьезного беспокойства я обнаружил, что работает следующий подход. Однако я не уверен, элегантно это или нет. Кажется, он работает во всех местах, где я его использую.
Решение состоит в том, чтобы использовать @object_name
, доступный в родительском классе FormBuilder, для поиска перевода в правильном месте.
# 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