7

Tengo un formulario creado usando la gema simple_form que rellena 2 modelos usando atributos anidados. Quiero verificar si hay algún error y mostrar un nuevo bloque. Sin embargo, no estoy seguro de cómo acceder correctamente al mensaje de error para el atributo location del modelo Booking.Accediendo a mensajes de error para el campo de atributo anidado

class Booking < ActiveRecord::Base 
    belongs_to :customer 

    attr_accessible :date_wanted, :location 
end 

y

class Customer < ActiveRecord::Base 
    has_many :bookings 
    accepts_nested_attributes_for :bookings 

    attr_accessible :name, :phone, :bookings_attributes 

    validates_presence_of :name, :phone 
end 

vista Formulario:

simple_form_for @customer, {:html => { :class => "form-horizontal" }} do |f| 
    = f.input :name 
    = f.input :phone 
    = f.simple_fields_for :bookings do |b| 
    = b.input :date 
    = b.input :location 
    - if @customer.errors[:appointments_attributes][:location] 
     # insert code if any validation errors for the date field were found 
    = f.button :submit 

Respuesta

7

b es una instancia de constructor de la forma, la celebración de booking, lo que puede probar:

# ... 
if b.object.errors[:location] 
# ... 
+1

Gracias! Puedo ver si hay mensajes de error usando if 'b.object.errors [: location] .empty?'. – dspencer

Cuestiones relacionadas