Ajax


#1

Tengo un formulario donde se puede ir agregando o eliminando información
sobre estudios para una persona,no tengo problemas para ir agragando
estudios pero al eliminarlos se eliminan de la base de datos y se
ocultan en el formulario, el problema es que después, al grabar el
formulario me arroja error, porque busca el estudio eliminado y no lo
encuntra. Detallo a continuación:

_form.rhtml:

 <tr>
  <td><strong>Estudios:</strong></td>
  <td>
      <%= link_to_remote 'Agregar Estudio',

:url=>{:action=>‘agregar_estudio’,:id => @persona},
:update=>‘nuevo_estudio’,:position
=> :top %>

 

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

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


<%= 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>

Tengo comentado lo del año, ya que tb me provoca errores, abrí un tema
antes al respecto.

El controlador de personas personas_controller.rb:

def eliminar_estudio
persona = Persona.find(params[:id])
estudio_temp = Estudio.find(params[:estudio_id])
@id_for_div = "estudio "+estudio_temp.id.to_s
persona.estudios.delete(estudio_temp)
render :action=> ‘…/application/eliminar_item’

end

def agregar_estudio
@nuevo_estudio = session[:ne]
ne = Estudio.new
@nuevo_estudio << ne
session[:ne] = @nuevo_estudio
render :partial => ‘estudio’
end
def update
@persona = Persona.find(params[:id]) 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
Estudio.update(params[:e].keys,params[:e].values) unless params[:e].nil?
if @persona.update_attributes(params[:persona])
@persona.save!
flash[:notice] = ‘El contacto ha sido modificado
exitosamente’
redirect_to :action => ‘show’, :id => @persona
else
flash[:notice] = ‘El contacto NO ha sido modificado, revise la
información’
redirect_to :action => ‘show’, :id=> @persona
end
end


eliminar_item.rjs:

page[@id_for_div].visual_effect :highlight
page[@id_for_div].visual_effect :blind_up


_estudio.rhtml:

Grado:<%= text_field_tag 'grado[]'%> Institucion:<%= text_field_tag 'institucion[]' %> Año: <%= select_year(Date.today, :start_year => 1950, :name => 'ano')%>
HELP