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|%>
(‘e[]’,‘institucion’) %>
<% 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"> </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:
HELP