显示错误时访问模型的属性转换

时间:2016-06-17 13:39:44

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4 rails-activerecord

我已经成功创建了我的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中附加了错误,如此屏幕截图所示: enter image description here

提前致谢。

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

您可以这样做:

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

我用我的User模型对此进行了测试:

enter image description here