Hola a todos,
Estoy haciendo un ejercicio con una tabla llamada alumnos cuyo modelo
tiene los campos:
id, ap_pat, ap_mat, nombre, etc… , el ‘id’ es la llave primaria y
segun veo rails hace las busquedas por esta llave sin ningun problema,
mi ejercicio consiste ahora en buscar un registro en la tabla en base al
apellido paterno (ap_pat) asi que para este efecto decidi hacer dos
cosas:
1- Denifi dentro de mi clase ‘alumnos’ un nuevo metodo
‘encuentra_alumno’ como sigue:
def encuentra_alumno
@alumno = Alumno.find(:first, :conditions => [ “ap_pat = ?”,
params[:ap_pat]])
respond_to do |format|
format.html # index.html.erb
format.xml { render :xml => @alumno }
end
end
este metodo es exactamente el mismo que el metodo ‘show’ definido por
rails, solo que antes la busqueda era por ‘id’ definida asi:
@alumno = Alumno.find(params[:id])
yo la modifique a:
@alumno = Alumno.find(:first, :conditions => [ “ap_pat = ?”,
params[:ap_pat]])
2- En la carpeta ‘Views’ saque una copia de la vista ‘show.html.erb’ y
la renombre como ‘encuentra_alumno.html.erb’, asi de esta manera la
accion ‘encuentra_alumno’ tendria su correpondiente vista.
En el navegador ingreso:
http://localhost:3000/alumnos/encuentra_alumno/Galvan
donde ‘Galvan’ es el apellido del alumno que deseo buscar y me arroja lo
siguiente:
RuntimeError in Alumnos#encuentra_alumno
Showing app/views/alumnos/encuentra_alumno.html.erb where line #7
raised:
Called id for nil, which would mistakenly be 4 – if you really wanted
the id of nil, use object_id
Extracted source (around line #7):
4:
5: Id:
6:
7: <%=h @alumno.id %>
8:
9: <%=h @alumno.ap_pat %>
10:
Alguno de Uds ha experminentado este error ?, apreciare cualquier
comentario, ayuda, sugerencia…
Gracias.
Jose G.