Forum: Rails-ES Problema con formularios "nesteados" e i18n al mostrar los errores

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
William Wong G. (Guest)
on 2009-04-21 20:51
(Received via mailing list)
Saludos comunidad.

Estamos trabajando sobre un proyecto con Rails 2.3.2 y hemos tenido que
usar
nested forms en el registro de usuarios.

Para ello manejamos dos modelos User y Company (User has_one :company y
Company belongs_to :user)

En el modelo User tenemos:

...
has_one :company
accepts_nested_attributes_for :company
...

En el controlador de usuarios tenemos:

...
def new
  @user = User.new
end

 def create
    @user = User.new(params[:user])
    if @user.save_without_session_maintenance
      session[:user_id] = @user.id
      redirect_to thanks_user_url
    else
      load_countries
      render :new
    end
  end
...

En el form de new de users llamamos a los atributos de company de la
siguiente manera (usamos HAML):

- form_for setup_user(@user), :url => user_path do |f|
...
- form.fields_for :company do |company_form|
    %p
      = company_form.label :company_type, _('Tipo de empresa: ')
      == #{company_form.radio_button :company_type, '1'} #{_('Empresa
constituida')}
      == #{company_form.radio_button :company_type, '2'} #{_('Persona
particular')}
    %p
      = company_form.label :name, _('Nombre de la empresa: ')
      = company_form.text_field :name
      %small (Requerido para empresa constituida)
...


En config/locales/es.yml tenemos lo siguiente

...
activerecord:
    attributes:
      user:
        country_id: País
        user_type: Tipo de usuario
        first_name: Nombres
        last_name: Apellidos
        email: Correo electrónico
        phone: Teléfono
        password: Contraseña
        terms: Términos del servicio
      company:
        name: Nombre de empresa
        company_type: Tipo de empresa

...

Todo con el registro funciona ok, pero al momento de mostrar los errores
del
formulario, la de los campos de Company se muestran de la siguiente
manera:


   - Contraseña es un campo requerido
   - Contraseña no coincide con la confirmación
   - Company company type es un campo requerido   <--------- Nótese el
   Company company type (debería mostrar Tipo de empresa es un campo
requerido)
   - Correo electrónico es un campo requerido

Es decir, no se aplican las traducciones. Alguna solución u observación
de
su parte?

Gracias de antemano.
Toni R. (Guest)
on 2009-04-21 23:30
(Received via mailing list)
Hola,

Creo que te funcionaria si repites la clave company_type dentro de user,
es
decir:

activerecord:
    attributes:
      user:
        country_id: País
        user_type: Tipo de usuario
        first_name: Nombres
        last_name: Apellidos
        email: Correo electrónico
        phone: Teléfono
        password: Contraseña
        terms: Términos del servicio
        *company_type: Tipo de empresa*
      company:
        name: Nombre de empresa
        company_type: Tipo de empresa

Mirando un poco por encima el codigo de rails del error_messages_for
parece
que solo trabaja con las traducciones del objeto actual y no con sus
relaciones. Vaya, solo carga la llave del hash :user

Espero que te funcione,

Saludos

2009/4/21 William Wong G. <removed_email_address@domain.invalid>
Ruben D. (Guest)
on 2009-04-22 00:07
(Received via mailing list)
Existe un parche para solucionar el error:

https://rails.lighthouseapp.com/projects/8994/tick...

para aplicar el parche dirigirse donde se encuentra rails(en este caso
yo le
tengo en vendor):

cd /path/al/proyecto/vendor/rails
git am associated_error_message_with_tests.diff

Saludos.
William Wong G. (Guest)
on 2009-04-22 00:24
(Received via mailing list)
Gracias por los consejos

El 21 de abril de 2009 15:07, Ruben. D. <removed_email_address@domain.invalid>
escribió:
This topic is locked and can not be replied to.