Select de Fechas

Realmente estoy muy molesta con el manejo de fechas, no me resulta nada
y la documentación no la entiendo. Por favor ayudenme:

  • tengo un form con una fecha, que pude ser modificada:

<% @persona.estudios.each do |@e|%>


Grado:<%= text_field (‘e[]’,‘grado’)%>
Institucion:<%= text_field
(‘e[]’,‘institucion’) %>
Año:
<%= date_select(‘e[]’, ‘ano’, :start_year =>
1960,:discard_day => true, :discard_month => true)%>


<%= link_to_remote ‘Eliminar Estudio’, :url=>{:action =>
‘eliminar_estudio’, :id => @persona, :estudio_id => @e},
:update=>'estudio '+ @e.id.to_s,:position=>:top%>


<% end %>
     <tr id="nuevo_estudio">
         <td colspan="4">&nbsp;</td>
    </tr>

Luego en el método Update:
@persona = Persona.find(params[:id])

if params[:interes]!= nil
    params[:interes].each do|na| #Agrega nuevas areas de interes
        @persona.areas << Area.find(na)
    end
end
if params[:especializacion]!= nil
    params[:especializacion].each do |na| #Agrega nuevas areas de

interes
@persona.areas << Area.find(na)
end
end

 if !params[:grado].nil?
  i=0
  params[:grado].each do
    @persona.estudios << Estudio.new(:grado => params[:grado][i],
                           :institucion => params[:institucion][i])
    i+=1
  end
end

 if !params[:nuevo_trabajador].nil?
  i=0
  params[:nuevo_trabajador].each do
    @persona.trabajadores << Trabajador.new(:empresa_id =>

params[:nuevo_trabajador][i],
:cargo => params[:cargo][i])
i+=1
end
end
if !params[:nuevo_lenguaje].nil?
i=0
params[:nuevo_lenguaje].each do
lenguaje_temp = Lenguaje.new(:idioma_id =>
params[:nuevo_lenguaje][i])
if !params[:es_nativo].nil? && params[:es_nativo][i] == 1
lenguaje_temp.es_nativo = true
else
lenguaje_temp.es_nativo = false
end
@persona.lenguajes<< lenguaje_temp
i+=1
end
end

Estudio.update(params[:e].keys,params[:e].values) unless

params[:e].nil?

y el error que obtengo es:
Couldn’t find Estudio with ID=ano(1i)

Si comento el select del año, no tengo problemas, claro excepto que no
tengo el año. AYUDA Plis!!!

Los métodos date_select y datetime_select, no soportan el estándard “[]”
auto_index y el “:index => X”, al menos en la versión 1.0.0 del
componente ActionPack, existe un parche :

http://dev.rubyonrails.org/ticket/2655

Espero te sirva.

Jaime Mora R.

On Tuesday 23 January 2007 15:02, Chika wrote:

y el error que obtengo es:
Couldn’t find Estudio with ID=ano(1i)

en la entrada del controlador pon un breakpoint. Cázalo en
el ./script/breakpointer y veras cómo te llega codificada la fecha en
tres
variables diferentes (en ningún caso un objeto de la clase Date) en la
variable @params.

Alguna vez también me he calentado yo con los helpers de fechas en
formularios. Mi consejo es que uses algún plugin para selección de
fechas
(que usan javascripts muy bonitos) o que gestiones tú mismo los combos
en el
formulario.

hola
el error que te da es porque no estas pasando bien los parametros,
update(id,
attributes)
vos le estás pasando el key del array, NO el id de la tabla estudio y
los
valores del formularios.

Vos le estas mostrando al usuario todos los estudios de un persona y se
los
permitís modificar, cuando envías el formulario tenés que rearmar todos
los
estudios y actualizarlos, rails tiene un poco de magia pero no tanta

  • tenés que pasarle en un campo oculto el id del estudio, para que sepa
    cual
    actualizar
  • deberias recorrer el array que llegua al controlador con los estudios
    y
    actualizarlos de a 1
  • por la fecha no te preocupes, cuando los campos coincidan, rails hace
    el
    resto (debería)

espero sirva
Saludos.
Hernán