【问题标题】:Updating the attributes in the rails errors更新 rails 错误中的属性
【发布时间】:2015-08-19 15:51:21
【问题描述】:

我希望更新带有人性化属性名称的 rails 发送的模型错误哈希。例如,对于名为 Foo 的模型。我有一个名为 foo_nm 的属性。当我做@foo.errors 假设@foo 是类Foo 的对象时,我希望翻译成foo_name。

{"foo_nm"=>["can't be blank"]}

到目前为止,我尝试通过以下方式扩展human_attribute_name

   HUMANIZED_ATTRIBUTES = {
    :foo_nm => "foo_name"
  }

  def self.human_attribute_name(attr, options={})
    HUMANIZED_ATTRIBUTES[attr.to_sym] || super
  end

但这似乎并没有修改错误哈希。关于如何更新错误哈希的任何想法将不胜感激

【问题讨论】:

  • 你不能用@foo.errors.add(:foo_name, 'error message')吗?然后提取与您的属性名称不匹配的错误foo_nm 等?
  • @MrYoshiji 我正在使用 validates :foo_nm ,presence: true 并且根据您将不得不重写 validates 只是为了在错误哈希中添加 foo_name 。这是我不想做的事情,因为我有 10 个其他模型,比如 foo,我需要 _nm 为 _name。所以我必须到处改变它

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


【解决方案1】:

您不能在您的语言环境文件中执行此操作吗?

# config/locales/en.yml
en:
  hello: "Hello world"
  activerecord:
    models:
      foo: "Foo"
    attributes:
      foo_nm: "foo_name"

【讨论】:

  • 这是我尝试的第一件事,似乎只有在您执行 foo.errors.full_messages 而不是 foo.errors 时才考虑区域设置翻译。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多