我使用的是Rails 3.2.6,这是一个例子:
class Man < ActiveRecord::Base
has_many :eyes
accepts_nested_attributes_for :eyes
end
class Eye < ActiveRecord::Base
belongs_to :man
validates_inclusion_of :color, in: { %w[brown green blue] }
end
Views (in HAML):
= form_for @man do |f|
- if @man.errors.any?
#error_explanation
%h2= t 'errors.messages.record_invalid', count: @man.errors.count
%ul
- @man.errors.full_messages.each do |msg|
%li= msg
= f.fields_for(:eyes) do |b|
.field
= b.label :color
= b.text_field :color
.actions
= f.submit :submit
it.yml:
it:
activerecord:
attributes:
customer:
eyes: Occhi
customer/eyes:
color: Colore
errors:
models:
man/eyes:
attributes:
color:
inclusion: non valido
然而,颜色的标签没有翻译(但它是' activiterecord .attributes.eye.color'),错误消息中的属性只有"Occhi",其余的是errors.model.eyes.attributes.color.inclusion
而不是errors.models.man/eyes.attributes.color.inclusion
错误信息是errors.model.man.attributes.eyes.inclusion
,但我如何区分它?应该是"Occhi Colore non valido"而不是"Occhi non valido"
试一下:
it:
activerecord:
attributes:
# set the name used in nested attribute error messages
customer/eyes:
color: Occhi Colore
errors:
models:
# change the error message for eye color not included in the list
eye:
attributes:
color:
inclusion: non valido
messages:
# change the inclusion message globally
inclusion: non valido
helpers:
label:
# set the label used by form builder for labels
man[eyes_attributes]:
color: Occhi Colore