【问题标题】:I18n for attribute errorsI18n 属性错误
【发布时间】:2013-09-20 20:00:31
【问题描述】:

是否存在一种方法来做这样的事情:

Model.human_attribute_name :attr

但有错误?

这样的……

Model.human_error_name :attr, :error

例如:

Ticket.human_error_name :ticket_type_id, :no_tickets_left

我想在我的观点上避免这种情况:

I18n.t("activerecord.errors.models.ticket.attributes.ticket_type_id.no_tickets_left")

【问题讨论】:

    标签: ruby-on-rails-3 activerecord internationalization rails-i18n


    【解决方案1】:

    我不知道,但是将这样的方法添加到所有模型中非常容易:

    module Hemju
      module HumanErrorName
        extend ActiveSupport::Concern
    
        def human_error_name(attr, error)
          I18n.t("activerecord.errors.models.#{self.class.to_s}.attributes.#{attr}.#{error}")
        end
      end
    end
    ActiveRecord::Base.send(:include, Hemju::HumanErrorName)
    

    在初始化程序中激活扩展:

    require 'hemju/human_error_name'
    

    现在每个模型都有一个 'human_error_name' 方法。请记住,每次更改方法时,都必须重新启动服务器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-10
      相关资源
      最近更新 更多