4

私は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

ビュー (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

ただし、色のラベルは翻訳されていません(ただし、「actviterecord.attributes.eye.color」と一緒です)、エラーメッセージの属性は「Occhi」のみで、残りはerrors.model.eyes.attributes.color.inclusion代わりですerrors.models.man/eyes.attributes.color.inclusion

エラー メッセージは ですがerrors.model.man.attributes.eyes.inclusion、どうすれば区別できますか? 「おっち non valido」ではなく、「Occhi Colore non valido」のようなものにする必要があります。

4

1 に答える 1

6

これを試してみてください:

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
于 2013-03-13T21:07:52.490 に答える