【问题标题】: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' 方法。请记住,每次更改方法时,都必须重新启动服务器。