ruby-on-rails - Rails FormBuilder 子类和翻译
问题描述
我正在 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 子类中找不到任何有关翻译问题的文档。如何做到这一点?
解决方案
经过严重的摆弄,我发现以下方法有效。但是我不确定它是否优雅。它似乎在我使用它的所有地方都有效。
解决方案是使用@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
推荐阅读
- c# - 绑定属性在 Xamarin 中不起作用
- netcdf - 使用 CDO 从 netcdf 计算月平均和年降水量总和
- flutter - Flutter themeData字体不反映
- python - 索引错误:在 Python 3 中针对特定测试用例列出超出范围的索引,即使在制作角落案例之后也是如此
- c# - 如何在 netcore 中使用 .com.cy 获取主机价值
- c - 有什么方法可以获取 X509 证书的可打印版本的长度(由 X509_print* openssl 函数打印)?
- mapbox - Mapbox Directions API 返回直线
- abap - 根据优先级从 JEST 表中获取单个主要状态?
- ios - Swift 委托方法未被调用
- python - “类型错误:对象类型
加密图像时无法传递给 C 代码