显示错误时访问模型的属性翻译

Accessing the model's attribute translations when displaying error

我已成功创建 he.yml 来本地化模型的属性名称, 示例:

      attributes:
       vendor:
        name: שם ספק
        counter_number: מספר חשבונית
        phone: טלפון
        address: כתובת

现在,使用 simple_form 的 f.input 在表单中显示标签,可以正确显示每个属性的翻译值。

问题是,验证后显示错误,使用

<% @vendor.errors.each do |attribute, error| %>

|属性|例如,对于错误 "counter_number",显示:"counter_number"。 不是语言环境文件中的翻译文件 [正如我之前提到的,已成功配置和加载]。 我在 ul.errors 中附加了错误,如以下屏幕截图所示:

提前致谢。

以下只是完成您提供的代码的示例。

<% @vendor.errors.each do |attribute, error| %>
  <strong><%= t("activerecord.attributes.#{@vendor.class.to_s.underscore}.#{attribute}") %>:</strong>
  <%= error.messages.to_sentence %>
<% end %>

也许有比这更简单的方法。

你可以这样做:

@vendor.errors.messages do |attribute, errors|
  translated_attribute = Vendor.human_attribute_name(attribute)
  errors = errors.join(", ")
end

我用我的 User 模型测试了这个: